[英]how to store bytes like b'PK\x03\x04\x14\x00\x08\x08\x08\x009bwR\x00\x00\x00\x00\x00\x00\x00 to dataframe or csv in python
[英]Why does `(33).to_bytes(2, 'big')` return `b'\x00!'` instead of `b'\x00\x21'`?
我在Python中將int轉換為字節時遇到問題。
這工作 -
>>> (1024).to_bytes(2, 'big')
b'\x04\x00'
然而,這並不像我預期的那樣有效 -
>>> (33).to_bytes(2, 'big')
b'\x00!'
我不明白的是什么?
十進制值33
映射到角色!
通過ASCII標准,所以解釋器可以在不使用轉義碼的情況下顯示它:
>>> b'\x21' * 3
b'!!!'
當打印一個字節對象時,python將其視為一個字符序列(每個字符都保存為一個字節,每個字節通常使用一個8位的存儲器,映射成2個十六進制數字值,例如0x21 => 0b 0010 0001 => 33
),所以帶有相應可打印ASCII字符的值顯示為ASCII字符,其余值用十六進制值表示(格式為\\xDD
)。
根據文檔 - > https://docs.python.org/3.3/library/stdtypes.html
>>> (1024).to_bytes(2, byteorder='big')
b'\x04\x00'
>>> (1024).to_bytes(10, byteorder='big')
b'\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00'
>>> (-1024).to_bytes(10, byteorder='big', signed=True)
b'\xff\xff\xff\xff\xff\xff\xff\xff\xfc\x00'
>>> x = 1000
>>> x.to_bytes((x.bit_length() // 8) + 1, byteorder='little')
b'\xe8\x03'
你不明白!
是ASCII字符33,相當於\\x21
。 這個字節串正是你要求的字節串; 它只是沒有按照你期望的方式顯示。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.