我編寫(xiě)了一個(gè) python 腳本,用于struct.pack()將十進(jìn)制數(shù)轉(zhuǎn)換為十六進(jìn)制字符串。例如:struct.pack('>h', 1024) => '\x04\x00'問(wèn)題是,當(dāng)我輸入一個(gè)低于 256 的數(shù)字時(shí),它仍然會(huì)創(chuàng)建一個(gè)由兩個(gè)字節(jié)組成的字符串。例如:struct.pack('>h', 20) => '\x00\x14'這對(duì)我來(lái)說(shuō)是個(gè)問(wèn)題,因?yàn)閷?duì)于 256 以下的數(shù)字,我只能使用一個(gè)字節(jié)。這意味著對(duì)于小數(shù)點(diǎn)后 20,我想生成輸出 '\x14'。有什么方法可以強(qiáng)制struct.pack()這樣做還是我需要不同的功能?
1 回答

德瑪西亞99
TA貢獻(xiàn)1770條經(jīng)驗(yàn) 獲得超3個(gè)贊
'>h'
代表 big endian 兩個(gè)字節(jié)的短整數(shù)。
如果你想得到一個(gè)單字節(jié)無(wú)符號(hào)整數(shù),你必須使用'>B'
:
struct.pack('>B', 20) => '\x14'
可以查看官方文檔中的格式字符,但最常用的是:
c
: char,長(zhǎng)度為 1 的字符串,1 字節(jié)b
: 有符號(hào)字符,整數(shù),1 字節(jié)B
: 無(wú)符號(hào)字符,整數(shù),1 字節(jié)h
:短,整數(shù),2字節(jié)H
:無(wú)符號(hào)短整型,2字節(jié)i
:整數(shù),整數(shù),4字節(jié)I
:無(wú)符號(hào)整數(shù),整數(shù),4字節(jié)f
:浮動(dòng),浮動(dòng),4字節(jié)d
:雙,浮點(diǎn)數(shù),8字節(jié)
字節(jié)序 ( '>'
) 確定字節(jié)位置,但對(duì)于 1 個(gè)字節(jié)并不重要。
添加回答
舉報(bào)
0/150
提交
取消