次の値を含む unsigned char 配列があります: "\x00\x91\x12\x34\x56\x78\x90"; つまり、16 進形式で送信される数値です。さらに、BCD 形式です: バイトで 00、別のバイトで 91 (8 ビット)
反対側では、この値を 0091234567890 としてデコードする必要があります。
私は次のコードを使用しています:
unsigned int conver_bcd(char *p,size_t length)
{
unsigned int convert =0;
while (length--)
{
convert = convert * 100 + (*p >> 4) * 10 + (*p & 15);
++p
}
return convert;
}
ただし、得られる結果は 1430637214 です。
私が理解したのは、16 進数値 (\x00\x91\x12\x34\x56\x78\x90) を送信していて、bcd 変換が 10 進数値に作用していることです。
出力をCharで00911234567890として受け取ることができるように助けてください。
よろしくカラン