gpt4 book ai didi

python - 将数字转换为 4 字节的二进制?

转载 作者:太空宇宙 更新时间:2023-11-03 20:11:09 25 4
gpt4 key购买 nike

我需要将数字转换为二进制时间戳对象。这是工作功能...

def parse_timestamp(binary_timestamp, timestamp_len):

return binary_timestamp[3] * (2 ** 21) \
+ (binary_timestamp[2] & 0x7f) * (2 ** 14) \
+ (binary_timestamp[1] & 0x7f) * (2 ** 7) \
+ (binary_timestamp[0] & 0x7f)

我的工作基本上是执行与此函数完全相反的操作(从数字转换为二进制时间戳),但我需要一些指导。

最佳答案

我想说使用 struct.pack/struct.unpack 将有助于维护字节序。我不太明白你所说的最左边的位始终为 1 是什么意思,是对于所有字节还是仅四字节二进制时间戳的最左边的位。

鉴于该函数,您很可能通过将结果数字除以每个字节值来反转转换?

Your number = a(2**21) + b(2**14) + c(2**7) + d

这将导致 a、b、c、d 显然是您的字节。为了得到一个,

remain_1 = number % a #removes all multiples of 2**21
a = (number-remain_1)/(2**21) #this is the integer value of a

我的困惑是你需要在哪里打包字节顺序以及哪一位始终是 1 的问题。您可以将逻辑扩展到其余字节,您应该能够获取 4 个字节,然后以某种方式将它们组合成与 binary_timestamp 相同的格式。

也许这样包装?

import struct
binary_timestamp[3] = struct.pack('>B',a) + 0x80 #add 0x80 to ensure the leftmost bit is 1.

因此,本质上,根据字节值对数字进行切片。然后打包并填充字节。另外,我不知道您的二进制时间戳对象是什么,所以这只是反转您添加的函数的过程。

关于python - 将数字转换为 4 字节的二进制?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58708245/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com