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

Anfängerfragen zum Programmieren mit PureBasic.
funkheld
Beiträge: 649
Registriert: 31.12.2009 11:58

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

Beitrag 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
Benutzeravatar
KeyKon
Beiträge: 1412
Registriert: 10.09.2004 20:51
Computerausstattung: Laptop: i5 2,8 Ghz, 16GB DDR3 RAM, GeForce 555GT 2GB VRAM
PC: i7 4,3 Ghz, 32GB DDR3 RAM, GeForce 680 GTX 4GB VRAM
Win10 x64 Home/Prof
PB 5.30 (64bit)
Wohnort: Ansbach
Kontaktdaten:

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

Beitrag 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
(\/) (°,,,°) (\/)
funkheld
Beiträge: 649
Registriert: 31.12.2009 11:58

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

Beitrag von funkheld »

Jup, danke für die Hilfe.

Gruss
Antworten