Python中的uint64到十六进制数组
我有不同的uint64号码,我想通过CAN总线和Python中的SocketCAN发送这些号码。我需要将这个大数字分成8个字节,这样我就可以将值分配给can数据字节。但我正在努力实现。 我非常感谢您的帮助或建议Python中的uint64到十六进制数组,python,hex,byte,can-bus,socketcan,Python,Hex,Byte,Can Bus,Socketcan,我有不同的uint64号码,我想通过CAN总线和Python中的SocketCAN发送这些号码。我需要将这个大数字分成8个字节,这样我就可以将值分配给can数据字节。但我正在努力实现。 我非常感谢您的帮助或建议 谢谢你的帮助 在将数字转换为字节表示时,struct模块是您的朋友: i = 65357 print(hex(i)) bigendian = struct.pack(">Q", i) littleendian = struct.pack("<Q", i) print(rep
谢谢你的帮助 在将数字转换为字节表示时,
struct
模块是您的朋友:
i = 65357
print(hex(i))
bigendian = struct.pack(">Q", i)
littleendian = struct.pack("<Q", i)
print(repr(bigendian)
print(repr(littleendian)
这意味着您可以方便地使用单个字节(按您需要的顺序)通过can总线发送它们当涉及到将数字转换为字节表示时,
struct
模块是您的朋友:
i = 65357
print(hex(i))
bigendian = struct.pack(">Q", i)
littleendian = struct.pack("<Q", i)
print(repr(bigendian)
print(repr(littleendian)
这意味着您可以轻松地使用单个字节(按照您需要的顺序)通过can总线发送它们假设您使用的是Python 3,您可以简单地使用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库,但如果您正在使用,您可以将字节、int列表或bytesarray传递给。假设您正在使用python 3,您可以简单地使用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
库,但如果您正在使用,则可以将字节、int列表或bytesarray传递给