alexey_sigida
@alexey_sigida

Как перевести из 16-тиричного кода в 10-тичный?

Дан двоичный файл. Число хранится в двух байтах. Первый перевод таким способом:count = (buf[0]<<8) | (buf[1]); работает,а дальше выдает не те числа.
char buf[8];
unsigned short count;
ifstream file("CM.dat",ios::binary);
file.read(buf,2);
count = (buf[0]<<8) | (buf[1]);
  • Вопрос задан
  • 465 просмотров
Пригласить эксперта
Ответы на вопрос 2
megat72
@megat72
Программист-разработчик
Не знаю, что у Вас в первых 2-х байтах, но buf[0]<<8 всегда должен давать 0, т.к. размер buf[0] - 8 бит. Правильная склейка должна предусматривать предварительное приведение октетов к unsigned short:
( (unsigned short)(buf[0]) <<8) | (unsigned short)(buf[1])
Ответ написан
Комментировать
@oleg0xff
Что значит в "десятичный"? Обычно компьютеры работают в двоичном коде, возможно вы просто хотите строку где символами записано десятичное представление Вашего числа?

читайте unsigned short:

unsigned short number;
file.read(&number, sizeof(unsigned short ));
// и записывайте строковое значение с помошью
 fprintf(out_file,"%u", number);
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы