Reading bytes and converting to int
joao
joao.rab at hotmail.com
Sat Aug 25 13:18:50 PDT 2012
On Saturday, 25 August 2012 at 20:03:38 UTC, Jonathan M Davis
wrote:
> On Saturday, August 25, 2012 21:50:58 joao wrote:
>> Thanks everyone, I solved the problem.
>> I didn't understand these bitmanip methods so I searched and
>> found a function to do what I wanted:
>>
>> string b = "\x24\x10\x00\x00";
>> uint i = byteToInt(b);
>> uint byteToInt(string b) {
>> return b[0] | b[1] << 8 | b[2] << 16 | b[3] << 24;
>> }
>>
>> => 4132
>
> What's hard to understand about them? I thought that they were
> very
> straightforward.
>
> This will do essentially the same thing:
>
> import std.bitmanip;
> import std.system;
>
> void main()
> {
> ubyte[] b = [0x24, 0x10, 0x00, 0x00];
> auto i = peek!(uint, Endian.littleEndian)(b);
> assert(i == 4132);
> }
>
> Use peek if you don't want to consume the buffer and read if
> you do.
>
> - Jonathan M Davis
It's not hard, sorry, it's because I'm a begginner.
So, all I wanted to do was to open a file and read the first 4
bytes and then return the int value. The last part I managed to
do.
But the first I'm trying.
In Python it is something like this:
f = open('filename')
s = f.read(4)
...
In D I don't know yet. I'm trying to do:
File f = File('filename')
Then I want to read just 4 bytes. I still don't know what method
is :P
More information about the Digitalmars-d-learn
mailing list