Обратите внимание, что это не домашнее задание, и я искал перед тем, как начать эту новую ветку. Я получил Сохранить int в массиве символов?
Я искал ответ, но не получил удовлетворительного ответа в приведенной выше теме.
Вот мое требование: я хочу закодировать свои данные (скажем, целое число) в массиве байтов, а затем передать их по сети, а затем декодировать на другом конце и обработать.
Вот часть кодирования:
const int MAX=5;
uint32_t a = 0xff00ffaa;
char byte_array[1024]; // this is the array to be transferred over the network
char buff[MAX]="";
sprintf(buff,"%4d",a);
memcpy(byte_array,buff,4);
// fill remaining stuff in the byte array and send it over the network
Вот часть декодирования:
const int MAX=5;
char buff[MAX]="";
strncat(buff,byte_array,4)
int i=atoi(buff);
// Work with i
Вот мои вопросы:
1) Переносим ли приведенный выше код? Я думаю, это так (поправьте меня, пожалуйста)
2) Теперь я хочу закодировать массив байтов с 3 байтами (но целочисленный размер равен 4), то есть сказать, что целое число хранит 0x00ffaabb, и я просто хочу, чтобы массив байтов имел индекс ff int 0th aa в 1-м индексе и bb в 2-й индекс. Как это сделать?
snprinf
, похоже, не работает или я что-то упускаю.
Мне легко может помочь человек, который реализовал какой-либо сетевой протокол. Думаю, логика декодирования все равно будет работать. (strncat(buff,byte_array,3)
, за которым следует atoi
вызов функции).
Вот что говорится в протоколе:
--------+--------+--------+--------+------------------------------ |Version| 3 byte length | Remaining stuff --------+--------+--------+--------+------------------------------
Версия - это 1 байт, за которым следуют 3 байта сообщения.
Я надеюсь, что смогу прояснить свою проблему