C 拆分字符串并将单个片段转换为十六进制

C 拆分字符串并将单个片段转换为十六进制,c,string,hex,strtol,C,String,Hex,Strtol,我有一个类似于“03FE”的字符串,它包含十六进制值。我需要将这个字符串分成两部分,并将每个部分转换为等效的十六进制 也就是说,在一个变量中需要0x03,在另一个变量中需要0xFE 例如,如果我不必拆分字符串,我会这样做: char *p; uint32_t uv=0; uv=strtoul(&string_to_convert, &p, 16); 如果我需要拆分字符串,该如何进行操作?我想 您可以创建一个长度为n+1的附加缓冲区,您希望将字符串拆分为n字节标记 用于将

我有一个类似于
“03FE”
的字符串,它包含十六进制值。我需要将这个字符串分成两部分,并将每个部分转换为等效的十六进制

也就是说,在一个变量中需要
0x03
,在另一个变量中需要
0xFE

例如,如果我不必拆分字符串,我会这样做:

 char *p;
 uint32_t uv=0;
 uv=strtoul(&string_to_convert, &p, 16);
如果我需要拆分字符串,该如何进行操作?

我想

  • 您可以创建一个长度为
    n+1
    的附加缓冲区,您希望将字符串拆分为
    n
    字节标记
  • 用于将
    n
    字符打印到临时缓冲区
  • 用于将临时缓冲区内容转换为十六进制值
  • 迭代,直到你有令牌留下
通过这种方式,您可以使用一种通用的方法来标记并将任意长度的源字符串转换为标记,然后将其转换为十六进制值。

我认为

  • 您可以创建一个长度为
    n+1
    的附加缓冲区,您希望将字符串拆分为
    n
    字节标记
  • 用于将
    n
    字符打印到临时缓冲区
  • 用于将临时缓冲区内容转换为十六进制值
  • 迭代,直到你有令牌留下

通过这种方式,您可以使用一种通用方法来标记化并将任意长度的源字符串转换为标记,然后将其转换为十六进制值。

将strtoul的输出拆分为:

uint8_t uv_hi = uv >> 8;
uint8_t uv_lo = uv & 0xFF;

将strtoul的输出拆分为:

uint8_t uv_hi = uv >> 8;
uint8_t uv_lo = uv & 0xFF;
没有“六元变量”这样的东西。该变量包含一个整数。“十六进制”部分正是将整数表示为字符串的方式。整数本身不是十六进制。没有“十六进制变量”这样的东西。该变量包含一个整数。“十六进制”部分正是将整数表示为字符串的方式。整数本身不是十六进制。