2013-12-18 6 views
20

Müssen int aus Hexadezimalrepräsentation string wie "0xFA" oder besser "FA" machen. Brauchen Sie etwas wie atoi("FA"). Gibt es dafür Standardlösungen?atoi() aus hexadezimaler Darstellung string

+4

So etwas wie [ 'strtol'] (http://en.cppreference.com/w/c/string/byte/strtol), meinen Sie? – usr2564301

+3

[Kennen Sie Ihre Werkzeuge] (http://en.cppreference.com/w/c) – user694733

Antwort

47

Versuchen strtol() zu verwenden:

strtol("FA", NULL, 16); 
+0

Hinweis: es funktioniert auch mit '0xFA':" (optional) Präfix (0x oder 0X) angibt hexadezimale Basis (gilt nur, wenn die Basis ist 16 oder 0) " – usr2564301

+15

Für unsigned sollten Sie strtoul() verwenden, um Strings wie" 0x81234567 "richtig zu behandeln, sonst erhalten Sie 0xFFFFFFFF zurückgegeben. – gjcamann