我正在使用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/