Reading bytes and converting to int

Jonathan M Davis jmdavisProg at gmx.com
Sat Aug 25 13:02:20 PDT 2012


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


More information about the Digitalmars-d-learn mailing list