digitalmars.D.learn - Converting Hex string "0x001C" to long
- jicman (5/5) Oct 20 2007 Greetings.
- jicman (15/24) Oct 20 2007 found this,
- Frank Benoit (6/36) Oct 21 2007 Your example above uses toStringz which does a heap allocation. This is
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é
Oct 20 2007
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")); }
Oct 20 2007
jicman schrieb:jicman Wrote: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 :)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")); }
Oct 21 2007