0

我有一个字符串,比如"03FE"保存十六进制值。我需要将此字符串分成两部分,并将每个单独的部分转换为等效的十六进制。

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

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

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

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

4

2 回答 2

5

拆分输出strtoul

uint8_t uv_hi = uv >> 8;
uint8_t uv_lo = uv & 0xFF;
于 2015-06-10T05:54:07.703 回答
1

我认为

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

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

于 2015-06-10T05:53:41.783 回答