gpt4 book ai didi

c - 如何在 C 中将 uint32 转换为 uint64?

转载 作者:行者123 更新时间:2023-11-30 21:22:02 27 4
gpt4 key购买 nike

im 将 uint32_t 十六进制数转换为 uint32_t BCD 数。并对 uint64 十六进制转 BCD 执行相同操作...

我从 uint16 得到了这个

uint16_t CvtBcd(uint16_t HexNumber)
{
return ((HexNumber/ 10) << 4) | (HexNumber% 10);
}

编辑:

我将把它用作外部代码,用于更大的程序。

// Converts a uint32_t hex number into uint32_t BCD number.
extern uint32_t Cvt32Bcd(uint32_t HexNumber)
{
return ((HexNumber/10) << 8 | (HexNumber % 10));
}

最佳答案

在二进制编码的十进制表示中,每个十进制数字需要四位,因此您无法将所有(无符号)整数转换为相同大小的 BCD 表示,通常您需要更大的类型。忽略这个问题,将任何大小的无符号整数转换为其 BCD 表示的算法是

uintN_t convert_to_BCD(uintN_t n) {
uintN_t bcd = 0;
int shift = 0;
while(n) {
bcd |= (n % 10) << shift;
n /= 10;
shift += 4;
}
return bcd;
}

为了避免溢出,请使返回类型大于参数类型,但这当然不适用于最大的可用输入类型。然后,您可以使用 unsigned char 数组来保存数字,或使用包含两个 uintN_t 的结构来保存结果。

关于c - 如何在 C 中将 uint32 转换为 uint64?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11721301/

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