我正在使用gtk+。如何将字符串转换为十六进制字符*p=“88”到无符号字符s=0x88。我需要将字符串值从表分配到数组中的字节元素。

最佳答案

#include <stdint.h> // better integer types
#include <stdlib.h> // strtoul, NULL

const char* p = "88";
uint8_t s = (uint8_t) strtoul(p, NULL, 16);

评论:
指向字符串文本的指针应始终声明为常量。
对于小整数类型,首选stdint.h中的类型,因为它们比默认整数类型(如int)更安全。
有许多函数可以将字符串转换为整数最灵活的是“STRTO…”函数:strtol(字符串到long long)、strtoul(字符串到未签名的long)、strtod(字符串到double)等等。对于小于long的整数类型,不存在这样的转换函数。
您希望结果是无符号的,因此最好使用strtoul函数,以防止各种隐式类型提升问题。
因为函数返回一个unsigned long,所以将它转换为预期的类型,即uint8_t
函数的第三个参数告诉您希望数字转换的基数二进制为2,八进制为8,十进制为10,十六进制为16。

关于c - 将字符串转换为十六进制,如“88”到0x88,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21257641/

10-12 00:21
查看更多