从十六进制数据中提取十六进制值

时间:2014-01-27 13:19:00

标签: c++

我的十六进制数据为\ x83,表示它是十六进制数据。 我想得到值83.我已经完成了以下步骤。

char *has = "\x83";
unsigned long num;
char *endptr;

num = strtoul(has,&endptr,8);

哪个不是正确的解决方案。让我知道如何通过忽略十六进制表示来获取十六进制值。

此致

1 个答案:

答案 0 :(得分:4)

你错误地解释了你拥有的东西。这样:

char *has = "\x83";

定义一个1个字符的长字符串,由8位值0x83(十进制131个)组成(始终跟'\0'终止符一样)。

这不是您需要使用strtoul()转换的内容,它已经存在于二进制文件中。

只是做:

const unsigned int num = ((unsigned char *) has)[0];

你已经完成了。

如果值实际上是字符串中的十六进制,那么您将使用strtoul()

char *has = "0x83";

但这是完全不同的情况。