[英]How to convert Little Endian hex to int/long/string in Android?
我有一個通過串口獲取數據的android應用程序。
例如我得到了這個字節數組:
E8 FC 3E 0E 9C EB ED 0A 71 67 28 1C 28 28 02 00 75 8C 01 00 91 6A 00 00 4A 7C 00 00
我是從設備上獲得的,在此設備的文檔中,我看到了以下內容:
所有多字節值均以Little Endian格式排序
ByteOffset:0-4及其無符號長
ByteOffset:4-8個有符號長
ByteOffset:8-12個有符號長
ByteOffset:12-16個有符號長等。
我的問題是我無法將其轉換為有效的int或long。
我嘗試了這些轉換:
int val = (bytes[3] << (Byte.SIZE * 3));
val |= (bytes[2] & 0xFF) << (Byte.SIZE * 2);
val |= (bytes[1] & 0xFF) << (Byte.SIZE * 1);
val |= (bytes[0] & 0xFF);
long val = 0;
val += new Byte(bytes[3]).intValue();
val += new Byte(bytes[2]).intValue();
val += new Byte(bytes[1]).intValue();
val += new Byte(bytes[0]).intValue();
int val = java.nio.ByteBuffer.wrap(bytes).order(java.nio.ByteOrder.LITTLE_ENDIAN).getInt();
我應該如何解析我的字節數組?
更新:示例輸入字節數組:
B5 62 01 12 24 00 C0 C3 E3 01 03 00 00 00 01 00 00 00 09 00 00 00 0A 00 00 00 03 00 00 00 00 00 00 00 00 00 00 28 00 00 00 AA 00 FE 00 EC 8A
頭的前2個字節(B5 62)
秒2字節表示類和id(01 12)
在2個字節之后,有效載荷長度(24 00)
校驗和的最后2個字節(EC 8A)
在有效負載長度和校驗和字節之間,我想解析數據。
這是解析后的數據:
看起來像一個不錯的難題。 但是我認為我不能為您提供太多幫助。 唉。
當我輸入您的清單時,它看起來像十六進制,而不是再見;
int [] hexes = {0xB5, 0x62, 0x01, 0x12, 0x24, 0x00, 0xC0, 0xC3, 0xE3, 0x01, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0xAA, 0x64, 0xFE, 0x00, 0xEC, 0x8A};
Google-fu: 將Little Endian轉換為Big Endian
資源 :
Java和Endian Java Integer是Big Endian。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.