gpt4 book ai didi

c - 十六进制到压缩 BCD 的转换?

转载 作者:行者123 更新时间:2023-11-30 20:30:51 24 4
gpt4 key购买 nike

我应该如何将包含十六进制值的 uint8 数组转换为打包的 bcd 值?简单地调动 4 个位置就能完成工作吗?如果可能的话,我希望提供一些代码示例以更好地理解我的问题

最佳答案

以下代码是如何转换的示例。它将 BCD 数字放入 4 位半字节中,如 s="4660" ==> bcd[]= {0x46, 0x60}

void toBCD(int x)
{
int nchars, k;
char s[20], *cp=s;
unsigned char b, bcd[20], *p=bcd;

nchars= sprintf(s,"%d",x);
k=0;
while (*cp) {
b = (unsigned char)(*cp++ - '0');
if (k==0) {
*p= b;
k= 1;
}
else {
*p= (*p<<4) | b; //shift left and put in right nibble
p++;
k= 0;
}
}
if (k==1)
*p= (*p<<4);
}

(代码不会返回任何有意义的内容;它只是转换的示例)

关于c - 十六进制到压缩 BCD 的转换?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53100004/

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