How can I create byte values from integers in Python?

。_饼干妹妹 提交于 2019-12-10 17:48:41

问题


Background: I need to send a numerical value as a byte to an external device, but I have run into a problem. My code is:

ser=serial.Serial("COM3",9600, timeout=0)
ser.write(value)

where "value" is an int that I read have read. The problem is, when I send this, it sends the character value, not the actual value (it sends the byte value 31 for the number 5, since that is the unicode position for it, I believe)

In reality, I want to be able to send it the character "\x05" for example. I guess my question is, how would I convert and int 5 to a char "\x05", or 37 to "\x37"


回答1:


Use the built-in function chr().

If you have a list of such integers you need to send, you might consider using a bytearray().

Alternatively, in newer versions of Python you can simply use a byte type.




回答2:


you can use this..

bytes(chr(my_int))    # not strictly correct unless 0<=my_int<=255
bytes((my_int,))


来源:https://stackoverflow.com/questions/9645188/how-can-i-create-byte-values-from-integers-in-python

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!