我有不同的uint64号码,我想用Python语言中的SocketCAN通过CAN总线发送。我需要将大数分成8个字节,这样我就可以将值分配给can数据字节。但是我正在为实现而挣扎。我非常感谢您的帮助或建议。
谢谢你的帮忙!
发布于 2018-06-07 23:44:47
当涉及到将数字转换为字节表示时,struct
模块是您的得力助手:
i = 65357
print(hex(i))
bigendian = struct.pack(">Q", i)
littleendian = struct.pack("<Q", i)
print(repr(bigendian)
print(repr(littleendian)
输出结果与预期一致:
'0x10001'
b'\x00\x00\x00\x00\x00\x01\x00\x01'
b'\x01\x00\x01\x00\x00\x00\x00\x00'
这意味着您可以轻松地使用单个字节(按您需要的顺序)通过can总线发送它们
发布于 2018-06-09 08:15:26
假设您正在使用Python3,您可以简单地使用Python int的to_bytes
方法,如下所示:
i = 65357
print(hex(i))
print(i.to_bytes(8, 'big'))
print(i.to_bytes(8, 'little'))
输出:
0xff4d
b'\x00\x00\x00\x00\x00\x00\xffM'
b'M\xff\x00\x00\x00\x00\x00\x00'
不确定您是否正在使用python-can
库,但是如果您正在使用,您可以向can.Message传递字节、整型数组或字节数组。
https://stackoverflow.com/questions/50743906
复制相似问题