簡體   English   中英

如何將16bit二進制文件轉換為32bit文件?

[英]How to convert 16bit binary file to 32bit file?

我有幾個16位二進制文​​件,我需要在python中將其轉換為32位二進制文​​件。

我嘗試了以下方法:

        data16 = np.fromfile(data_dir+fn, dtype=np.uint16)
        print("16bit " + str(data16))

        convert = np.array(data16 * 256)
        print("32bit " + str(convert) + "\n")

我是處理數據文件和字節等的新手,但是從我過去幾個小時中讀到的內容來看,這應該行得通嗎?

根據我已閱讀的輸出,它似乎在某些部分有效,但在其他部分卻無效。

這是輸出:

16bit [41238   273   257 ... 65456 65472 65482]
32bit [ 5632  4352   256 ... 45056 49152 51712]

16bit [41238   273   769 ...     4     1 65521]
32bit [ 5632  4352   256 ...  1024   256 61696]

16bit [41238   273   513 ...    52    75    67]
32bit [ 5632  4352   256 ... 13312 19200 17152]

這里有一部分位(文件很大,pycharm只打印出一部分)。 在最后一行中,最后3位被正確轉換,但不是所有位都正確轉換,為什么呢?

您正在看到整數溢出。 np.uint16可以表示的最大值是2 ^ 16 = 65536。

41238 * 256遠大於2 ^ 16。 您得到的值為41238 * 256%2 ^ 16。

為避免溢出,請將數字轉換為np.uint32,然后乘以256:

convert = data16.astype(np.uint32) * 256

請注意,您將使用2 ^ 8乘法因子轉換為24位范圍,而不是32位范圍。

import numpy as np

data16 = np.fromfile(data_dir+fn, dtype=np.uint16)
print("16bit " + str(data16))

data32 = data16.astype(dtype=np.uint32) * 256
print("32bit " + str(data32))

暫無
暫無

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

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