J'essaie d'affecter les 8 premiers octets d'un tampon de caractères avec "00 00 00 00 00 00 00 A0". Je suis capable de vérifier que le tampon est bien construit. Chaque fois que j'essaie d'hexdump en utilisant mon utilitaire, j'obtiens une sortie inattendue. Pas sûr, s'il me manque quelque chose d'autre ici.Conversion hexadécimale et sortie de vidage
#include<stdio.h>
#include<string.h>
static void hexdump(const char *src, int count)
{
int i;
if (count == 0)
return;
for (i = 0; i < count; ++i) {
printf("%02x ", src[i]);
if ((i + 1) % 16 == 0)
printf("\n");
}
printf("\n");
}
int main() {
char msg_buff[148];
memset(msg_buff, 0, 148);
int a[8] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA0};
sprintf(msg_buff, "%02x %02X %02X %02X %02X %02X %02X %02X", a[0], a[1],
a[2], a[3], a[4], a[5], a[6], a[7], a[8]);
printf("packet %s \n", msg_buff); // 00 00 00 00 00 00 00 A0
hexdump(msg_buff, 148);
}
Ma sortie
packet 00 00 00 00 00 00 00 A0
30 30 20 30 30 20 30 30 20 30 30 20 30 30 20 30
30 20 30 30 20 41 30 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00
Sortie prévue
packet 00 00 00 00 00 00 00 A0
00 00 00 00 00 00 00 A0 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00
'char' ->' unsigned char' puis 'unsigned char msg_buff [148]; memset (msg_buff, 0, sizeof msg_buff); caractère non signé char a [8] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA0}; memcpy (msg_buff, a, sizeof a); hexdump (msg_buff, sizeof msg_buff); ',' "% 02x" '->' "% 02X" ' – BLUEPIXY
Cela fonctionne ... merci – thinkcool
@BLUEPIXY: vous aimez vraiment adapter toutes vos réponses dans la boîte de commentaires. :) – Groo