Reading and converting binary file 2 bits at a time
rumbu via Digitalmars-d-learn
digitalmars-d-learn at puremagic.com
Thu Aug 27 02:26:54 PDT 2015
On Thursday, 27 August 2015 at 09:00:02 UTC, Andrew Brown wrote:
> Hi,
>
> I need to read a binary file, and then process it two bits at a
> time. But I'm a little stuck on the first step. So far I have:
>
> import std.file;
> import std.stdio;
>
> void main(){
> auto f = std.file.read("binaryfile");
> auto g = cast(bool[]) f;
> writeln(g);
> }
>
> but all the values of g then are just true, could you tell me
> what I'm doing wrong? I've also looked at the bitmanip module,
> I couldn't get it to help, but is that the direction I should
> be looking?
>
> Thanks very much
>
> Andrew
auto bytes = cast(ubyte[])read("binaryfile");
foreach(b; bytes)
{
writeln((b & 0xC0) >> 6); //bits 7, 6
writeln((b & 0x30) >> 4); //bits 5, 4
writeln((b & 0x0C) >> 2); //bits 3, 2
writeln((b & 0x03)); //bits 1, 0
}
More information about the Digitalmars-d-learn
mailing list