gNome hat geschrieben:
also ich hab length als integer vorliegen und wandel mir den in hex um:
length = 15
a = hex(length)
a wird somit zu 0xf.
so jetz will ich 0xf an ein socket schicken
sock.send(a)
aber da schickt er mir dann 0xf als string! wie bekomm ich das hin dass er mir wirklich nur den hex-value schickt? also 1 byte mit wert 15 und nicht die anderen 3 ;D
Du kannst keine "Hex values" verschicken. Was Du verschicken kannst sind Bytes. Und Du möchtest gerne ein Byte mit dem Wert 15 verschicken. Das man 15 auch in hexadezimaler Schreibweise als 0xF ausdrücken kann hat damit nichts zu tun.
Wie Du schon gesehen hast erhältst Du mit `hex()` eine Zeichenkette die den Wert hexadezimal darstellt. Also nicht das was Du brauchst.
Du brauchst ein Zeichen, denn Zeichen sind nichts anderes als Bytes, mit dem Wert 15:
Code: Alles auswählen
In [1]: length = 15
In [2]: hex(length)
Out[2]: '0xf'
In [3]: chr(length)
Out[3]: '\x0f'
In [4]: len(chr(length))
Out[4]: 1
Die letzte Eingabe habe ich nochmal gemacht, damit Du siehst, das da wirklich nur ein Zeichen herauskommt. Da ein ASCII-Wert 15 aber nichts "druckbares" ist, wird das Byte mit dem Backslash und in Hex-Notation angezeigt.