我的十六进制数据为\ x83,表示它是十六进制数据。 我想得到值83.我已经完成了以下步骤。
char *has = "\x83";
unsigned long num;
char *endptr;
num = strtoul(has,&endptr,8);
哪个不是正确的解决方案。让我知道如何通过忽略十六进制表示来获取十六进制值。
此致
答案 0 :(得分:4)
你错误地解释了你拥有的东西。这样:
char *has = "\x83";
定义一个1个字符的长字符串,由8位值0x83(十进制131个)组成(始终跟'\0'
终止符一样)。
这不是您需要使用strtoul()
转换的内容,它已经存在于二进制文件中。
只是做:
const unsigned int num = ((unsigned char *) has)[0];
你已经完成了。
如果值实际上是字符串中的十六进制,那么您将使用strtoul()
:
char *has = "0x83";
但这是完全不同的情况。