Я слишком тупой сейчас, чтобы решить эту проблему...
Я получаю число BCD (каждая цифра является собственным 4-битным представлением)
Например, что я хочу:
- Ввод: 202 (шестнадцатеричный) == 514 (десятичный)
Вывод: BCD 0x415
Ввод: 0x202
- Битовое представление: 0010 0000 0010 = 514
Что я пробовал:
unsigned int uiValue = 0x202;
unsigned int uiResult = 0;
unsigned int uiMultiplier = 1;
unsigned int uiDigit = 0;
// get the dec bcd value
while ( uiValue > 0 )
{
uiDigit= uiValue & 0x0F;
uiValue >>= 4;
uiResult += uiMultiplier * uiDigit;
uiMultiplier *= 10;
}
Но я знаю, что это очень неправильно, это будет 202 в битовом представлении, а затем разбито на 5 кусочков, а затем снова представлено в виде десятичного числа.
Я могу решить проблему на бумаге, но я просто не могу решить ее на простом C-коде.
uiValue = 202
, а не0x202...
. И если бы это было 0x202, то значение BCD было бы десятичным 202... - person Daniel Gehriger   schedule 06.11.2012