【问题标题】:extracting hexadecimal value from hexadecimal data从十六进制数据中提取十六进制值
【发布时间】:2014-02-18 08:34:25
【问题描述】:

我有十六进制数据为\x83,表示它是一个十六进制数据。 我想得到值 83。我有以下步骤。

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

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

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

问候,

【问题讨论】:

标签: c++


【解决方案1】:

你误解了你所拥有的。这个:

char *has = "\x83";

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

这不是您需要使用strtoul() 转换的东西,它已经以二进制形式存在。

只要做:

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

你已经完成了。

如果字符串中的值确实以十六进制形式存在,您将使用strtoul()

char *has = "0x83";

但那是完全不同的情况。

【讨论】:

    猜你喜欢
    • 2018-07-26
    • 2011-12-09
    • 2015-08-01
    • 1970-01-01
    • 2011-06-01
    • 2014-08-24
    • 1970-01-01
    • 2014-04-20
    相关资源
    最近更新 更多