У меня есть следующие проблемы при использовании тетсра:Копирования двоичных данных с тетсром в с
Предположат, что шестнадцатеричные данные должны быть скопированы в двоичном, например: 203800000E820006, а затем применить следующую инструкцию:
unsigned char buffer[8];
memcpy(buffer,"\x20\x38\x00\x00\x0E\x82\x00\x06",8);
Однако, когда я пишу данные в двоичном формате, он печатает только два первых байта в двоичном формате, потому что \ x00 интерпретируется как ограничитель строк. Как избежать или исправить это, чтобы представить 16-символьную строку в двоичном формате с 8 символами?
Что вы имеете в виду под «он появляется только» ?! Появляется где? Кроме того, почему «+1»? Это 8 байтов данных, правильно? –
Ваш код в порядке, и ваш массив 'buffer' должен содержать только те 8 байтов, которые вы хотите. Почему вы говорите «это только первые два байта»? Вы делали 'printf («% s », buffer)' или что-то еще? Это имеет смысл, потому что '% s' ожидает строку с нулевым завершением, поэтому она остановилась, когда увидела ее. Но остальная часть данных была там (она просто не печаталась). –
@ TinoReyna Это не строка. Не называйте это строкой. Если вы его распечатаете, вы должны использовать код, который знает, как печатать 8 байтов двоичных данных. Вы используете такой код? –