我有以下代码,
int main(){
const char *hexstring = "f";
int number = (int)strtoul(hexstring, NULL, 16);
printf("%d", number); //Prints 15
char s[5];
s[0] = number;
printf("%d", s[0]); //prints 15
}
我为" 1F"它按预期返回31。
如果,hexString
值 FF 或任何其他导致3位数字的值,则s[0]
会返回负值。
我做错了什么?如果s[0]
为" FF"
hexString
保持255
答案 0 :(得分:3)
char
可以是已签名或未签名的。看起来char
已在您的平台上签名。在您的情况下,您想使用unsigned char
。
变化:
char s[5];
为:
unsigned char s[5];