Кодирование, декодирование целого числа в массив символов
Обратите внимание, что это не домашняя работа, и я выполнил поиск перед началом новой темы. я получилСохранить int в массиве char?
Я искал ответ, но не получил удовлетворительного ответа в вышеупомянутой теме.
Вот мое требование: я хочу кодировать свои данные (скажем, целое число) в байтовом массиве, а затем передавать по сети, а затем декодировать на другом конце и обрабатывать их.
Вот часть кодирования:
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 0-й индекс aa в 1-м индексе и bb в 2-й указатель Как это сделать?
snprinf
не похоже на работу или, может быть, я что-то упустил.
Человек, который внедрил любой сетевой протокол, может легко помочь мне. Я думаю, что логика декодирования все еще будет работать. (strncat(buff,byte_array,3)
с последующимatoi
вызов функции).
Вот что говорится в протоколе:
--------+--------+--------+--------+------------------------------ |Version| 3 byte length | Remaining stuff --------+--------+--------+--------+------------------------------
Версия - 1 байт, за которой следует 3-байтовая длина сообщения.
Я надеюсь, что смогу прояснить мою проблему