gpt4 book ai didi

将 BCD 码转换为无符号字符

转载 作者:太空宇宙 更新时间:2023-11-04 06:31:47 26 4
gpt4 key购买 nike

我有一个包含以下值的无符号字符数组:“\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 的输出

问候卡兰

最佳答案

看起来你只是溢出了你的 unsigned int,它在你的系统上大概是 32 位。变化:

     unsigned int convert =0;

到:

     uint64_t convert = 0;

为了保证 convert 的 64 位数量。

确保添加:

#include <stdint.h>

关于将 BCD 码转换为无符号字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19783986/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com