Converting Hex string "0x001C" to long
Frank Benoit
keinfarbton at googlemail.com
Sun Oct 21 04:32:51 PDT 2007
jicman schrieb:
> jicman Wrote:
>
>> Greetings.
>>
>> I am working with a Windows COM program and I am getting a hex string like this, "0x001C", and I would like to change it to a long. I tried a few things, but std.conv conversion is failing.
>>
>> Any help would be greatly appreciated?
>>
>> thanks,
>>
>> josé
>
> found this,
>
> http://www.digitalmars.com/d/archives/digitalmars/D/learn/read_Hexadecimal_value_from_string_8632.html#N8633
>
> import std.string, std.stdio;
> import std.c.stdlib;
>
> long hexToLong(string s)
> {
> long v = strtoul(toStringz(s), null, 16);
> if (getErrno() == ERANGE) throw new Exception("Out of range");
> return v;
> }
>
> void main()
> {
> writefln("%d",hexToLong("0xC"));
> }
Your example above uses toStringz which does a heap allocation. This is
no good choice if you need to do this convertion a lot.
the tango.text.convert.Integer module has a parse function which takes a
base argument. Just cut the "0x".
Anyway, doing your own implementation is not so hard :)
More information about the Digitalmars-d-learn
mailing list