Ik wil een hex string via een socket versturen. Omdat ik alleen de hex string weet moet deze omgezet worden naar een character string (ascii ?) omdat de standaard socket sendto() functie een character string als de te versturen message verwacht. (de te versturen message wordt naar hex geconverteerd door de functie)
Dit gaat bijna goed (in WireShark zie ik dat er bijna wordt verstuurd wat ik wil) echter gaat het mis als er een 0 gestuurd moet worden.
Code fragmentje:
Waarde 0x00 wordt omgezet naar ascii, in tmpStr geschreven en wordt achter string geplakt. String moet uiteindelijk verstuurd worden. Op de plek in de verstuurde hex string waar ik een 00 verwacht, staat bijv. 30 of iets anders, afhankelijk of ik %c of wat anders gebruik in sprintf.
Het einde van een string (terminator) wordt aangeduid met 0 (dus null of \0) en ik las dat dat een proleem zou kunnen geven bij strcpy en/of strcat, wat de 'vreemde' karakters kan verklaren.
Heeft iemand ervaring met sockets en weet hoe ik toch een 00 kan versturen?
(ps. het liefste heb ik natuurlijk dat ik meteen de hex string op de socket zet, zonder de omslachtige vertaalslag, maar dat ben ik helaas nog niet tegengekomen)
Dit gaat bijna goed (in WireShark zie ik dat er bijna wordt verstuurd wat ik wil) echter gaat het mis als er een 0 gestuurd moet worden.
Code fragmentje:
C:
1
2
3
4
| char tmpStr[1]; sprintf(tmpStr, "%c", hex_to_ascii(buf, 0x00)); strcpy(tmpStr, "0"); strcat(string, tmpStr); |
Waarde 0x00 wordt omgezet naar ascii, in tmpStr geschreven en wordt achter string geplakt. String moet uiteindelijk verstuurd worden. Op de plek in de verstuurde hex string waar ik een 00 verwacht, staat bijv. 30 of iets anders, afhankelijk of ik %c of wat anders gebruik in sprintf.
Het einde van een string (terminator) wordt aangeduid met 0 (dus null of \0) en ik las dat dat een proleem zou kunnen geven bij strcpy en/of strcat, wat de 'vreemde' karakters kan verklaren.
Heeft iemand ervaring met sockets en weet hoe ik toch een 00 kan versturen?
(ps. het liefste heb ik natuurlijk dat ik meteen de hex string op de socket zet, zonder de omslachtige vertaalslag, maar dat ben ik helaas nog niet tegengekomen)