J'ai le problème suivant lors de l'utilisation memcpy:Copie des données binaires avec memcpy dans c
Supposons que des données de hexadécimaux doivent être copiés en binaire, par exemple: 203800000E820006, puis appliquez l'instruction suivante:
unsigned char buffer[8];
memcpy(buffer,"\x20\x38\x00\x00\x0E\x82\x00\x06",8);
Cependant, lorsque j'écris les données en binaire, il imprime seulement les 2 premiers octets en binaire, car \ x00 est interprété comme un terminateur de chaîne. Comment éviter ou corriger ceci afin de représenter la chaîne de 16 caractères dans un format binaire de 8 caractères?
Que voulez-vous dire par « il ne semble » ?! Apparaît où? Aussi, pourquoi le "+1"? C'est 8 octets de données, non? –
Votre code est correct, et votre tableau 'buffer' devrait contenir exactement les 8 octets que vous désirez. Pourquoi dites-vous "il n'apparaît que les 2 premiers octets"? Fais-tu 'printf ("% s ", buffer)' ou quelque chose? Cela a du sens, car '% s' attend une chaîne terminée par un caractère nul, donc elle s'est arrêtée quand elle en a vu une. Mais le reste des données était là (il n'a tout simplement pas été imprimé). –
@TinoReyna Ce n'est pas une chaîne. S'il vous plaît ne l'appelez pas une chaîne. Si vous l'imprimez, vous devez utiliser du code qui sait comment imprimer 8 octets de données binaires. Utilisez-vous un tel code? –