Моя проблема в том, что у меня есть 5 шестнадцатеричных массивов, и я хочу их объединить.
unsigned char sc1[] = "\xfc\xe8\x82\x00\x00\x00\x60\x89\xe5\x31\xc0";
unsigned char ip[] = "\xc0\xa8\x00\x01"; // IP 192.168.0.1
unsigned char sc2[] = "\x68\x02\x00";
unsigned char port[] = "\x04\xd2"; // PORT 1234
unsigned char sc3[] = "\x89\xe6\x50\x50\x50\x50\x40\x50\x40\x50"
Конечно, порядок не должен меняться (порядок сетевых байтов, я думаю): P Я попробовал это с memcpy
unsigned char result[sizeof(sc1) + sizeof(ip) + sizeof(sc2) + sizeof(port) + sizeof(sc3)];
memcpy( result, sc1, sizeof(sc1) );
memcpy( result + sizeof(sc1), ip, sizeof(ip) );
memcpy( result + sizeof(sc1) + sizeof(ip), sc2, sizeof(sc2) );
memcpy( result + sizeof(sc1) + sizeof(ip) + sizeof(sc2), port, sizeof(port) );
memcpy( result + sizeof(sc1) + sizeof(ip) + sizeof(sc2) + sizeof(port), sc3, sizeof(sc3) );
и т. Д. Для каждого массива, но когда я пытаюсь его распечатать
for (int i = 0; i < sizeof(result); i++) {
printf("%d ", result[i]);
}
результат просто глупость, поэтому я перестал возиться и надеюсь, что вы мне поможете.
РЕДАКТИРОВАТЬ: Извините, ребята, я понял, я так глуп! Конечно, я должен использовать %x
printf("%x ", result[i]);