"\ x00 \ x91 \ x12 \ x34 \ x56 \ x78 \ x90"값을 포함하는 부호없는 char 배열이 있습니다. 숫자가 16 진수 형식으로 전송됩니다. (8 비트) 난 다음 코드를 사용하고 0091234567890.BCD를 부호없는 char으로 변환
이 값을 디코딩하는데 필요한 반대편
다른 바이트의 바이트에 00, 91 : 는 또한 그것 BCD 포맷이다 :
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.
입니다 (\ x00 \ x91 \ x12 \ x34 \ x56 \ x78 \ x90) 내 bcd 변환은 소수 값에 따라 작동합니다. 나는 숯불에 00911234567890로
감사 카란를 출력을 수신 할 수 있도록
당신이 좀 도와 주시겠습니까 당신은 단순히 시스템에 아마도 32 비트를 당신의 서명 지능, 범람하는 것 같습니다
오버 플로우 문제가 있습니다. 'unsigned int '는 (거의 확실하게) 32 비트, 즉 4 바이트이다. 32 비트 변수에 9 백 9 십억을 맞추는 방법은 없습니다. –