Python 3中如何将长整型转换为字节?参考C#实现示例
在Python 3中实现长整型转字节(对应C#代码)
当然有啦!Python 3的整数类型自带了非常方便的to_bytes()方法,完全可以一行代码搞定你要的效果,和C#的逻辑对应得明明白白。
先拆解下你C#代码的逻辑:把64位长整型转成字节数组,然后反转数组,本质上是将数值转换为大端字节序(Big-Endian)的字节数组。那在Python里直接用to_bytes()指定参数就行:
time = 7620584977 a = time.to_bytes(length=8, byteorder='big', signed=False) # 转换成列表查看结果: print(list(a)) # 输出: [0, 0, 0, 1, 198, 56, 230, 224]
如果非要完全复刻C#的“转小端再反转”步骤,也可以这么写(虽然没必要,但供你参考):
time = 7620584977 # 先转小端字节数组,再反转得到大端结果 a = time.to_bytes(length=8, byteorder='little', signed=False)[::-1] print(list(a)) # 同样得到[0, 0, 0, 1, 198, 56, 230, 224]
简单解释下关键参数:
length=8:因为C#的long是64位(8字节),所以指定字节数组长度为8;byteorder='big':直接指定大端字节序,和你反转后的结果一致;signed=False:你的数值是无符号的,要是处理有符号长整型,改成True就行。
这样是不是既简洁又能精准得到你想要的结果?
内容的提问来源于stack exchange,提问作者muradheydarov
相关产品推荐
相关产品推荐

