[英]BigInteger in Python?
我目前需要在 python 中編寫一個接收器程序,我想知道我做錯了什么。 在 java 中我有(顯然是代碼片段):
byte[] fileSize = new byte[2];
BigInteger bi = new BigInteger(fileSize);
System.out.println("FileSize in Bytes: " + bi);
返回值: FileSize in Bytes: 27762
如果我打印出數組字節文件大小,我會得到以下值:
for(int u = 0; u < fileSize.length; u++){
System.out.println(fileSize[u]);
}
這返回: 108 and the value 114.
我在 python 端收到這兩個值(它通過數據報發送到 Python 接收器)。 我如何組合它們或將它們轉換為值 27762,例如 BigInteger 在 Java 中返回的值? 有點迷失在這一點上。
任何想法都會很棒!
提前致謝!
>>> int.from_bytes([108, 114], 'big') # easy way
27762
>>> (108 << 8) + 114 # what you are doing under the hood
27762
您在 Python 中查找的操作稱為按位操作。
本質上,您希望將兩個值作為二進制打包在一起。
108的二進制是1101100 114的二進制是1110010
要將它們一起打包成 Python 回到它們的 bigInt 等價物,你必須移動 108 為 114 騰出空間。你將它向左移動 8 個二進制位置
二進制的108,移動8位就是110110000000000,現在我們把它們打包在一起:
110110000000000
+ 1110010
----------------
110110001110010
將 110110001110010 轉換回十進制,我們得到 27762
所以本質上你想要的操作是:
>>> (108 << 8) + 114
27762
您必須自己找出邊緣情況的詳細信息,例如您的數字是否需要移動的字節數多於一個字節(也就是代碼 108 << 8 中的 8 位)
我能夠修復它,以防萬一有人遇到同樣的問題:
在 Python:
test = []
test.append(108)
test.append(114)
print(int.from_bytes(test, 'big'))
返回值 27762,與 Java 中的 BigInteger 轉換完全相同。
干杯!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.