【问题标题】:Split a string and convert individual pieces to hexadecimal拆分字符串并将单个部分转换为十六进制
【发布时间】:2015-06-10 05:51:38
【问题描述】:

我有一个像"03FE" 这样的字符串,它包含十六进制值。我需要将此字符串分成两部分,并将每个单独的部分转换为等效的十六进制。

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

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

 char *p;
 uint32_t uv=0;
 uv=strtoul(&string_to_convert, &p, 16);

如果我需要拆分字符串,我应该如何进行?

【问题讨论】:

  • 不存在“六变量”之类的东西。该变量包含一个整数。 “十六进制”部分只是将整数作为字符串呈现给人类的方式。整数本身不是十六进制的。

标签: c string hex strtol


【解决方案1】:

改为拆分strtoul的输出:

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

【讨论】:

    【解决方案2】:

    我认为

    • 您可以创建一个长度为n+1 的额外缓冲区,用于将字符串拆分为n 字节标记
    • 使用snprintf()n 字符打印到临时缓冲区。
    • 使用strtoul() 将临时缓冲区内容转换为十六进制值。
    • 迭代,直到剩下令牌。

    这样,您可以使用通用方法将 任何 长度的源字符串标记化并转换为标记,然后将它们转换为十六进制值。

    【讨论】:

      猜你喜欢
      • 2015-02-18
      • 1970-01-01
      • 2018-01-31
      • 2018-03-09
      • 1970-01-01
      • 2018-01-22
      • 1970-01-01
      • 2013-02-07
      • 1970-01-01
      相关资源
      最近更新 更多