簡體   English   中英

Python3編輯十六進制字符串

[英]Python3 editing hex string

我正在嘗試在另一個文件的標題中寫入文件的十六進制大小。 當我將長度轉換為十六進制時,得到b'\\x00\\x00\\x00\\x04'因此它將"00000004" b'\\x00\\x00\\x00\\x04'寫入文件。

該文件的長度雖然以2個字節的間隔存儲,所以我需要它將字符串格式化為b'\\x00\\x04' 最簡單的方法是什么?

import mmap
def compact_bytes(values):
    return (values[0] << 4)| values[2]

我試過了,但我知道這是不正確的,也不是正確的方法。

您正在將數字轉換為字節,而不是十六進制。 使用struct模塊執行此操作:

struct.pack('>H', values)

這將產生一個無符號的短2字節(大字節序)。 對於將產生\\x00\\x04的長度4

>>> import struct
>>> struct.pack('>H', 4)
b'\x00\x04'

假設整數是一個大端無符號短整數,請使用帶有大端標志的struct.pack

struct.pack('>H', values)

在此格式的字符串中, >是大端標志, H是無符號的短整數。

例:

>>> import struct
>>> struct.pack('>H', 4)
b'\x00\x04'

您可以在此處找到所有struct格式字符。

>>> 4 .to_bytes(2, 'big')
b'\x00\x04'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM