David Rohleder píše v St 22. 02. 2012 v 00:30 +0100: > Jakub Vojáček píše v Út 21. 02. 2012 v 23:56 +0100: > > Dne 21.2.2012 23:34, David Rohleder napsal(a): > > > azu je dle specifikace 01h, což do 1byte myslím nenarvu. > > > ^^^^ chybu máš tady. 01h do 1byte narveš. Když jsem to upravil na > > > data = struct.pack("!IHHBB", 0, 0, 0, 1, 1) > > > > > > tak mi ten baryk bez problémů odpověděl. > > Děkuji. Podle specifikace modulu struct B odpovídá unsigned char. > > Takže pokud budu chtít posílat serveru inicializační zprávu, tak pošlu > > B, pokud mu později budu chtít poslat nějaká data, tak to musím narvat > > do stringu (takže do s), chápu to správně? > > Ne. Protože "1" je ASCII hodnota 49. Samozřejmě by to šlo, pokud bys > dokázal do řetězce dát ta binární data. Tj. třeba jako data = data + > chr(1) > > Problém je spíš v tom struct, protože nepřijímá parametr typu pole, > takže nejde napsat data = struct.pack("B"*10 , [ 1, 1, 1, 10...] ) > > V tomto případě bych použil modul array následovně: > > import array > > data = array('B' , [ seznam s hodnotami ] ) > > s.sendto(data.tostring(), (host,port)) >
Když se na to teď trošku dívám, tak se to bude muset udělat spíš tak, že se spojí ten struct s array asi následovně: strukturovana_data = struct.pack(...) nestrukturovana_data = array('B', list).tostring() data_k_odeslani = strukturovana_data + nestrukturovana_data s.sendto(data_k_odeslani,...) To proto, abychom mohli použít ty funkce na převod do network byte order, ikdyž k tomu se určitě dají použít i funkce typu hton(). David _______________________________________________ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python