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

extracting hexadecimal value from hexadecimal data

本文关键字:十六进制 提取 数据      更新时间:2023-10-16

i具有十六进制数据为 x83,它表示它是十六进制的数据。我想获得值83.我有以下步骤。

char *has = "x83";
unsigned long num;
char *endptr;
num = strtoul(has,&endptr,8);

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

问:

您正在错误解释自己的所拥有的东西。这个:

char *has = "x83";

定义了一个1个字符的长字符串,由8位值0x83(小数为131)组成(一如既往的''终端)。

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

只是做:

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

你完成了。

如果该值确实像字符串中的十六进制一样:

,您将使用strtoul()
char *has = "0x83";

但这是完全不同的情况。