How to split 16-bit unsigned integer into array of bytes in python? -


I need to divide a 16-bit signed integer into an array of bytes (i.e. array.array ('B') ) in Python

For example:

  & gt; & Gt; & Gt; Reg_val = 0xABCD [Insert Python Magic]> gt; & Gt; & Gt; Print ("0x% X"% myarray [0]) 0xCD & gt; & Gt; & Gt; Print ("0x% X"% myarray [1]) 0xAB  

The way I am currently doing it is very easy, so some are very easy:

  & gt; & Gt; & Gt; Import structure & gt; & Gt; & Gt; Import array & gt; & Gt; & Gt; Reg_val = 0xABCD> & Gt; & Gt; Reg_val_msb, reg_val_lsb = struct.unpack ("& lt; BB", struct.pack ("& lt; H", (0xFFFF and reg_val))) & Gt; & Gt; Myarray = array.array ('B')> gt; & Gt; & Gt; Myarray.append (reg_val_msb) & gt; & Gt; & Gt; Myarray.append (reg_val_lsb)  

Is there a better / more efficient / more python way to accomplish the same thing?

(using Python 3 here, there are some naming variations in 2)

Well before, you can leave everything as bytes . It is absolutely valid:

  reg_val_msb, reg_val_lsb = struct.pack ('<', 0xABCD)  

bytes Allows for "unpacking the tubes" (not related to struct.unpack , tupl unpacking is used on all pythons). And bytes is an array of bytes, which you can access through the index.

  b = struct.pack (& ​​lt; H ', 0xABCD) b [0], b [1] out [52]: (205, 171)  < / Pre> 

If you really want to get it in an array array ('b') , it's still not easy:

  ary = Array ('b', struct.pack ('& lt; h', 0xABCD)) # ary = array ('b', [205, 171]) print ("0x% X"% ary [0]) # 0xCD  

Comments

Popular posts from this blog

import - Python ImportError: No module named wmi -

Editing Python Class in Shell and SQLAlchemy -

c# - MySQL Parameterized Select Query joining tables issue -