gpt4 book ai didi

将整数从(纯)二进制转换为 BCD

转载 作者:太空宇宙 更新时间:2023-11-04 00:15:29 24 4
gpt4 key购买 nike

我现在解决这个问题太蠢了......

我得到一个BCD码(每个数字都是自己的4Bit表示)

比如我想要的:

  • 输入:202(十六进制)== 514(十进制)
  • 输出:BCD 0x415

  • 输入:0x202

  • 位表示:0010 0000 0010 = 514

我尝试了什么:

unsigned int uiValue = 0x202;
unsigned int uiResult = 0;
unsigned int uiMultiplier = 1;
unsigned int uiDigit = 0;


// get the dec bcd value
while ( uiValue > 0 )
{
uiDigit= uiValue & 0x0F;
uiValue >>= 4;
uiResult += uiMultiplier * uiDigit;
uiMultiplier *= 10;
}

但我知道这是非常错误的,这将是 202 位表示,然后分成 5 个半字节,然后再次表示为十进制数

我可以在纸上解决问题,但我无法用简单的 C 代码解决

最佳答案

你理解错了。正如您的问题(原始)标题所说,您的代码正在从 BCD 转换为二进制。但是,只有当您从二进制转换为 BCD 时,您提供的输入和输出值才是正确的。在这种情况下,请尝试:

#include <stdio.h>

int main(void) {

int binaryInput = 0x202;
int bcdResult = 0;
int shift = 0;

printf("Binary: 0x%x (dec: %d)\n", binaryInput , binaryInput );

while (binaryInput > 0) {
bcdResult |= (binaryInput % 10) << (shift++ << 2);
binaryInput /= 10;
}

printf("BCD: 0x%x (dec: %d)\n", bcdResult , bcdResult );
return 0;
}

证明:http://ideone.com/R0reQh

关于将整数从(纯)二进制转换为 BCD,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13247647/

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