0
我正面臨一個着名的struct.pack的小角落案例。python轉換成int的任意字節數
情況如下:我有一個dll與python的薄層包裝。包裝中的一個python方法接受一個字節數組作爲參數。該字節數組表示特定硬件總線上寄存器的表示。每個總線具有不同的寄存器寬度,通常爲8,16和24位寬(在所有情況下對齊相同)。
當調用這個方法時,我需要將我的值(不管是什麼)轉換爲8/16或24位的字節數組。這種轉換是8或16位使用struct.pack相對容易:
byteList = struct.pack('>B', regValue) # For 8 bits case
byteList = struct.pack('>H', regValue) # for 16 bits case
我現在希望使其成爲所有三種情況下8/16 & 24位不夠靈活。我可以混合使用前兩行來處理這三種情況;但我覺得它很難看。
我希望這會工作:
packformat = ">{0}B".format(regSize)
byteList = struct.pack(packformat, regValue)
但它不是如此,因爲struct.pack期望的參數等量。
任何想法如何可以(整齊地)我的寄存器值轉換爲任意數量的字節?
這是高明......和完美的作品:) – TocToc