首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Python十六进制数组的uint64

Python十六进制数组的uint64
EN

Stack Overflow用户
提问于 2018-06-07 22:33:29
回答 2查看 118关注 0票数 0

我有不同的uint64号码,我想用Python语言中的SocketCAN通过CAN总线发送。我需要将大数分成8个字节,这样我就可以将值分配给can数据字节。但是我正在为实现而挣扎。我非常感谢您的帮助或建议。

谢谢你的帮忙!

EN

回答 2

Stack Overflow用户

发布于 2018-06-07 23:44:47

当涉及到将数字转换为字节表示时,struct模块是您的得力助手:

代码语言:javascript
复制
i = 65357
print(hex(i))
bigendian = struct.pack(">Q", i)
littleendian = struct.pack("<Q", i)

print(repr(bigendian)
print(repr(littleendian)

输出结果与预期一致:

代码语言:javascript
复制
'0x10001'
b'\x00\x00\x00\x00\x00\x01\x00\x01'
b'\x01\x00\x01\x00\x00\x00\x00\x00'

这意味着您可以轻松地使用单个字节(按您需要的顺序)通过can总线发送它们

票数 1
EN

Stack Overflow用户

发布于 2018-06-09 08:15:26

假设您正在使用Python3,您可以简单地使用Python int的to_bytes方法,如下所示:

代码语言:javascript
复制
i = 65357
print(hex(i))
print(i.to_bytes(8, 'big'))
print(i.to_bytes(8, 'little'))

输出:

代码语言:javascript
复制
0xff4d
b'\x00\x00\x00\x00\x00\x00\xffM'
b'M\xff\x00\x00\x00\x00\x00\x00'

不确定您是否正在使用python-can库,但是如果您正在使用,您可以向can.Message传递字节、整型数组或字节数组。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50743906

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档