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

I was able to do it by passing a list of the bytes to bytes():

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