拆分一个字符串并将各个部分转换为十六进制

时间:2015-06-10 05:51:39

标签: c string hex strtol

我有一个像myclass2这样的字符串,保存十六进制值。我需要将这个字符串分成两部分,并将每个部分转换为等效的十六进制。

也就是说,我需要在一个变量中{ "amount":550, "items":[ {"item_id":12334, "price": 504}, {"item_id":12335, "price":206} ] } ,在另一个变量中需要"03FE"

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

0x03

如果我需要分割字符串,我该如何处理?

2 个答案:

答案 0 :(得分:5)

strtoul的输出分开:

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

答案 1 :(得分:1)

我认为

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

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