我有一个包含以下值的无符号字符数组: "\x00\x91\x12\x34\x56\x78\x90"; 那是以十六进制格式发送的数字。此外,它是 BCD 格式:00 字节,91 另一个字节(8 位)
另一方面,我需要将此值解码为 0091234567890。
我正在使用以下代码:
unsigned int conver_bcd(char *p,size_t length)
{
unsigned int convert =0;
while (length--)
{
convert = convert * 100 + (*p >> 4) * 10 + (*p & 15);
++p
}
return convert;
}
但是,我得到的结果是 1430637214。
我的理解是我正在发送十六进制值 (\x00\x91\x12\x34\x56\x78\x90),而我的 bcd 转换作用于十进制值。
你能帮我吗,以便我可以在 Char 中收到 00911234567890 的输出
问候卡兰