C - 将Hex值转换为int并存储在char数组中

时间:2017-09-15 13:23:59

标签: c char hex

我有以下代码,

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

1 个答案:

答案 0 :(得分:3)

char可以是已签名或未签名的。看起来char已在您的平台上签名。在您的情况下,您想使用unsigned char

变化:

char s[5];

为:

unsigned char s[5];