我需要類似於Java項目的Python結構模塊的東西。我想打包整數(也可能是浮點數和雙精度)到字節數組中。此外,我想選擇字節順序,並且通常完全控制這是如何完成的,因爲我需要將這些數據發送到某個硬件,該硬件將以另一種語言運行代碼。將數據打包爲字節[]
回答
對於int VAR可以採取INT的每個字節,把陣列上。像這樣:
int info = 123456789;
byte [] data = new byte[100];
data[0] = (byte) ((info>>24) & 0xff);
data[1] = (byte) ((info>>16) & 0xff);
data[2] = (byte) ((info>>8) & 0xff);
data[3] = (byte) ((info) & 0xff);
int out = 0;
out = ((data[0]&0xff)<<24) | ((data[1]&0xff)<<16) | ((data[2]&0xff)<<8) | data[3]&0xff);
System.out.println("info " + info);
System.out.println("out " + out);
對於float或double,你不能直接這樣做。有必要將你的var轉換爲int。可以使用方法Float.floatToRawIntBits()或Double.doubleToRawLongBits()完成。
更好地使用['floatToRawIntBits()'](http://docs.oracle.com/javase/6/docs/api/java/lang/Float。 html#floatToRawIntBits%28float%29)或['doubleToRawLongBits()'](http://docs.oracle.com/javase/6/docs/api/java/lang/Double.html#doubleToRawLongBits%28double%29)用「像1000000這樣的常數乘以」來欺騙... – glglgl
@glglgl謝謝,使用floatToRawIntBits()真的更好。我會升級我的答案。 – Derzu
- 1. 將字節數據編碼爲數字
- 2. 將數字打包爲奇數位。
- 3. 將兩個99字節的TCP數據包合併爲一個198字節的TCP數據包。
- 4. 如何將數據包轉換爲字節
- 5. 將圖像數據轉換爲字節[]
- 6. 將數據編碼爲1個字節
- 7. 將字符串轉換爲Python中的打包數據
- 8. 打印字節包含NULL
- 9. C預處理器宏將位域打包爲一個字節?
- 10. 將4字節浮點數據壓縮爲1字節
- 11. 將字節打印爲十六進制
- 12. 將字節2d數組打印爲十六進制字符串
- 13. 在打字稿中將圖像轉換爲字節數組
- 14. 從字節讀取數據包ID
- 15. 數據包的字節大小
- 16. 使用Scapy解析數據包字節
- 17. 發送數據包時字節對齊
- 18. 數據包的填充字節
- 19. 數據包中的UDP字節順序
- 20. socket_recv數據包丟失字節PHP
- 21. 將字節數組轉換爲字符串的字節數
- 22. 將字符串數組(字節值)轉換爲字節數組
- 23. 數據包捕獲看到1434字節,而不是1500字節
- 24. 在Ruby中使用(「C」)指令打包爲字節字符串
- 25. 如何使用PHP Pack函數將整數打包到字節數組中?
- 26. 將1字節值和3字節值打包成單個32位結構
- 27. 將字節碼字符串包裝爲結構爲32位值
- 28. 如何將數字轉換爲字節?
- 29. 將字節轉換爲數字C#
- 30. 將數據移動到字節數組
也許是這樣的:http://docs.oracle.com/javase/1.5.0/docs/api/java/nio/ByteBuffer.html? – mowwwalker
也許你可以使用Python?可能不會,但。非常抱歉。 – Keith
完全像那個Walkerneo。想把這個答案放在一個答案中,也許有人讀這個問題,這樣我可以檢查它作爲接受的答案? –