将未签名的INT转换为BCD
Converting Unsigned Int to BCD
我具有将uint16_t
转换为BCD的函数。
uint16_t uint162BCD(uint16_t value)
{
uint16_t b_val = 0;
unsigned int shift = 0;
while (shift / 8 < sizeof(bcd))
{
b_val = static_cast<uint16_t>(b_val + ((value % 10) << shift));
value = value / 10;
shift = shift + 4;
}
return b_val;
}
我对以下值进行了小型单位测试
ASSERT_EQ(uint162BCD(0), (uint16_t) 0x0);
ASSERT_EQ(uint162BCD((uint16_t) 1), (uint16_t) 0x1);
ASSERT_EQ(uint162BCD((uint16_t) 12), (uint16_t) 0x12);
ASSERT_EQ(uint162BCD((uint16_t) 123), (uint16_t) 0x123);
ASSERT_EQ(uint162BCD((uint16_t) 56), (uint16_t) 0x56);
这些似乎是按预期转换的。但是,如果我这样做。
ASSERT_EQ(uint162BCD((uint16_t) 0056), (uint16_t) 0x56);
它不起作用。我期望的值与0x56相同。我在做什么错?
ASSERT_EQ(uint162BCD((uint16_t) 0056), (uint16_t) 0x56);
以" 0"开头的C或C 的字面整数被解释为八十位数字。" 0056"是我们人类,用十个手指,呼叫" 46"。
相关文章:
- 防止主数据类型C++的隐式转换
- 模板参数替换失败,并且未完成隐式转换
- 努力将整数转换为链表。不知道我在这里做错了什么
- HEX值到wchar_t字符(UTF-8)的转换
- lambda参数转换为constexpr技巧,然后获取带链接的数组
- 将 Qvector<uint8_t> 转换为 QString
- 如何在cuSparse中使用cusparseXcoo2csr从coo转换为csc
- 有关插入适配器的错误。[错误]请求从 'back_insert_iterator<vector<>>' 类型转换为非标量类型
- 在c++中使用nlohmann从类到json的转换
- 从"int*"强制转换为"unsigned int"会丢失精度错误
- 将Integer转换为4字节的unsined字符矢量(按大端字节顺序)
- 处理小于cpu数据总线的数据类型.(c++转换为机器代码)
- 如何使用OpenCV将RBG图像转换为HSV,并将H、S和V值保存为C++中的3个独立图像
- 复制列表初始化的隐式转换的等级是多少
- 正在将指针转换为范围
- 将未签名的INT转换为BCD
- 从十进制转换为 BCD
- 从整数到BCD的转换
- 将 BCD 字符串转换为十进制
- 将十进制数转换为包装 BCD,反之亦然