Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Python 3 Building an array of bytes

I need to build a tcp frame with raw binary data, but all examples and tutorials I've found talking about bytes always involve conversion from a string, and that's not what I need.

In short, I need to build just an array of bytes:

0xA2 0x01 0x02 0x03 0x04

Please note that I come from C/C++ world.

I've tried this:

frame = b"" frame += bytes( int('0xA2',16) ) frame += bytes( int('0x01',16) ) frame += bytes( int('0x02',16) ) frame += bytes( int('0x03',16) ) frame += bytes( int('0x04',16) ) 

Then, throw this frame variable to send method of socket, but not working as expected as frame doesn't contain what I want...

I know this is a very basic question about Python, so if you could point me in the right direction...

like image 947
Pherrymason Avatar asked Sep 26 '11 13:09

Pherrymason


People also ask

What is array of bytes in Python?

Python bytearray() Method The bytearray() method returns a bytearray object, which is an array of the given bytes. The bytearray class is a mutable sequence of integers in the range of 0 to 256.

Can you print [] byte?

You can simply iterate the byte array and print the byte using System. out. println() method.

How do you create an array of binary in Python?

To create a record array from binary data, use the numpy. core. records. fromstring() method in Python Numpy.


1 Answers

Use a bytearray:

>>> frame = bytearray() >>> frame.append(0xA2) >>> frame.append(0x01) >>> frame.append(0x02) >>> frame.append(0x03) >>> frame.append(0x04) >>> frame bytearray(b'\xa2\x01\x02\x03\x04') 

or, using your code but fixing the errors:

frame = b"" frame += b'\xA2'  frame += b'\x01'  frame += b'\x02'  frame += b'\x03' frame += b'\x04' 
like image 158
agf Avatar answered Oct 03 '22 08:10

agf