Помогите с BCD
От: Smooky Россия  
Дата: 26.09.06 18:17
Оценка:
Просмотрел по этмоу вопросу в форуме, ничего конкретного...
Есть телефонный номер из 15 цифр
char sz[16] = "123456789012345";
BYTE cb[8] = {0};
надо чтобы в cb было: младшие 4-ре бита первого байта — это цифра 1, старшие 4-ре бита — это 2-ая цифра, младшие 4-ре бита второго байта — это 3-я цифра и т.д.
т.е. каждый полубайт — это цифра десятичная от 0 до 9
void A2BCD(const char* psz, unsigned char* cb)
{
const char* src = psz;
unsigned char* dst = cb;
int len = strlen(psz);

for (int i = 0; i < len; i += 2) {
*dst = (*(src++) << 4) & 0xF0;
*(dst++) |= (*(src++) & 0x0F);
}
}
void BCD2A(unsigned char* cb, char* psz)
{
char* dst = psz;
unsigned char* src = cb;
int len = sizeof(cb);

for (int i = 0; i < 7; i++) {
*(dst++) = *src >> 4;
*(dst++) = *(src++) & 0x0F;
}
}

чот не работает! хотя в BCD помоему правильно, а вот вторая функция косячит
Только Путин, и никого кроме Путина! О Великий и Могучий Путин — царь на веки веков, навсегда!
Смотрю только Соловьева и Михеева, для меня это самые авторитетные эксперты.
КРЫМ НАШ! СКОРО И ВСЯ УКРАИНА БУДЕТ НАШЕЙ!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.