Seite 1 von 1

4 Byte + Länge in einem String packen für Client .

Verfasst: 17.10.2013 22:41
von funkheld
Hallo , gute Tag.
Wie kann man bitte dieses in Purebasic umwandeln.
Der String soll dann über den Client versendet werden:
Die 4 Byte sind : 45 67 89 34 , dahinter noch die Länge 4 .

n = len(cmd)
a = array('c')
a.append(chr((n >> 24) & 0xFF))
a.append(chr((n >> 16) & 0xFF))
a.append(chr((n >> 8 ) & 0xFF))
a.append(chr(n & 0xFF))
scratchSock.send(a.tostring() + cmd)

Danke.
Gruss

Re: 4 Byte + Länge in einem String packen für Client .

Verfasst: 18.10.2013 00:36
von KeyKon
Ich kann nicht so recht nachvollziehen was du damit meinst: Die 4 Byte sind : 45 67 89 34 , dahinter noch die Länge 4 .

Der Code wäre 1:1 Umgesetzt meiner Meinung nach das:

Code: Alles auswählen

n = Len(cmd.s)

sendString.s = ""

sendString + Chr((n >> 24) & $FF)
sendString + Chr((n >> 16) & $FF)
sendString + Chr((n >> 8 ) & $FF)
sendString + Chr(n & $FF)
sendString + cmd
Das dürfte aber zu Problemen führen, da eine 0, die in den ersten Bytes recht oft vorkommen dürfte ja signalisiert das der String abgeschlossen ist.
Du willst daher vermutlich eher das:

Code: Alles auswählen

n = Len(cmd.s)
*sendData = AllocateMemory(4+n)
PokeL(*sendData  ,n)
PokeS(*sendData+4,cmd)
LG KeyKon

Re: 4 Byte + Länge in einem String packen für Client .

Verfasst: 18.10.2013 09:04
von funkheld
Jup, danke für die Hilfe.

Gruss