我有一个像myclass2
这样的字符串,保存十六进制值。我需要将这个字符串分成两部分,并将每个部分转换为等效的十六进制。
也就是说,我需要在一个变量中{
"amount":550,
"items":[
{"item_id":12334, "price": 504},
{"item_id":12335, "price":206}
]
}
,在另一个变量中需要"03FE"
。
例如,如果我不必拆分字符串,我就是这样做的:
0x03
如果我需要分割字符串,我该如何处理?
答案 0 :(得分:5)
将strtoul
的输出分开:
uint8_t uv_hi = uv >> 8;
uint8_t uv_lo = uv & 0xFF;
答案 1 :(得分:1)
我认为
n+1
的额外缓冲区,您希望将该字符串拆分为n
个字节标记snprintf()
将n
个字符打印到临时缓冲区。strtoul()
将临时缓冲区内容转换为十六进制值。这样,您可以使用通用方法来标记化并将任何长度的源字符串转换为标记,然后将它们转换为十六进制值。