gpt4 book ai didi

将字符串转换为十六进制,例如 "88"到 0x88

转载 作者:太空宇宙 更新时间:2023-11-03 23:28:22 25 4
gpt4 key购买 nike

我正在使用 gtk+。如何将字符串转换为十六进制,例如 char*p="88"到 unsigned char 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);

评论:

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

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

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com