在C中将char *转换为uint16_t

时间:2015-10-30 03:08:30

标签: c linux

我有像

这样的char数组
char* str = 0x058f;

如何将此值转换为int和uint16_t,并通过uint16_t类型正确打印此值?

这意味着我希望uint16_t结果也是058f:

 uint16_t result = 0x058f;

2 个答案:

答案 0 :(得分:1)

  

将此值转换为int和uint16_t,并通过uint16_t

正确打印此值
int main(void) {

  char* str = "0x058f";

  int i;
  unsigned u;
  if (sscanf(str, "%x", &u) != 1) 
    Handle_Failure();
  i = (int) u;

  uint16_t u16;
  if (sscanf(str, "%" SCNx16, &u16) != 1) 
    Handle_Failure();

  printf("i: 0x%04x  i16: 0x%04" PRIx16 "\n", i, u16);
  return 0;
}

i: 0x058f  i16: 0x058f

答案 1 :(得分:1)

您可以使用strtol将字符串转换为整数值

true

我希望这会有所帮助。