1

我需要使用运行 Python 1.5.2+ (!!!) 且模块很少的嵌入式系统。并且没有可用的“结构”模块......这是可用模块的列表:

marshal
imp
_main_
_builtin_
sys
md5
binascii

是的,就是这样,没有结构模块......

所以,我需要创建一个无符号短整数的 4 字节表示以发送到串行...

使用结构:

date = day + month * 32 + (year - 2000) * 512
time = 100 * hour + minute
data = struct.pack(b'HH', date, time)

2 个字节上的日期时间 2 个字节上的时间,每个人都很高兴......

但是如果不使用“struct”模块,我该怎么做呢?

4

3 回答 3

5

你可以这样做:

x = 0xabcd

packed_string = chr((x & 0xff00) >> 8) + chr(x & 0x00ff)
于 2012-06-27T17:50:19.110 回答
1

这是给你的完整翻译

>>> import struct
>>> day = 1; month = 2; year = 2003
>>> hour = 4; minute = 5
>>> date = day + month * 32 + (year - 2000) * 512
>>> time = 100 * hour + minute
>>> data = struct.pack(b'HH', date, time)
>>> data
'A\x06\x95\x01'
>>> data.encode("hex")
'41069501'

之后

>>> data2 = chr(date & 0xFF) + chr((date >> 8) & 0xFF) + chr(time & 0xFF) + chr((time >> 8) & 0xFF)
>>> data2
'A\x06\x95\x01'
>>> data2.encode("hex")
'41069501'
>>>
于 2012-06-27T18:10:26.943 回答
0

我可以通过将字节列表传递给 bytes() 来做到这一点:

data=bytes([date%256,date//256,time%256,time//256])
于 2012-06-27T17:52:00.360 回答