在我的项目中使用的值是用4位二进制编码的十进制数(BCD)表示的,它最初存储在一个字符缓冲区中(例如,由指针指向 const unsigned char *
) .我想将输入的 BCD 字符流转换为整数。你能告诉我一个有效和快速的方法吗?
数据格式示例和预期结果:
BCD*2; 1001 0111 0110 0101=9765
"9" "7" "6" "5"
非常感谢!
最佳答案
unsigned int lulz(unsigned char const* nybbles, size_t length)
{
unsigned int result(0);
while (length--) {
result = result * 100 + (*nybbles >> 4) * 10 + (*nybbles & 15);
++nybbles;
}
return result;
}
length
指定输入中的字节数,因此对于 OP 给出的示例,nybbles
将是 {0x97, 0x65}
code> 和 length
将为 2。
关于c++ - 将二进制编码的十进制 (BCD) 解码为无符号整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6138060/