1
我想解碼並讀取從設備發送的二進制數據,我需要提取二進制結構內的十進制數字。 是這種結構細節:如何使用java讀取給定的二進制結構?
(2)同步消息格式 typedef結構
{
WORD
SyncHeader;
WORD
SyncID;
DWORD UnitID;
} SyncStruct;
- SyncHeader總是0xf8fa
- SyncID被一個消息序列號
- 單元ID是單元標識號碼
For例如,接收的消息是
0xFA 0xF8 0x1B 0x01 0x81 0x60 0x33 0x3C
- SyncHeader = 0xF8的0xFA迴應
- SyncID = 0×01 0x1B(十進制= 283)
- 的UnitID =爲0x3C 0x33 0x60的0×81(十進制= 1010000001)
現在,具有良好定義的結構,我有一個小的java代碼,讀取不同的結構,但實現相同的原則:
private String getId(ChannelBuffer buf) {
String id = "";
for (int i = 0; i < 7; i++) {
int b = buf.getUnsignedByte(i);
// First digit
int d1 = (b & 0xf0) >> 4;
if (d1 == 0xf) break;
id += d1;
// Second digit
int d2 = (b & 0x0f);
if (d2 == 0xf) break;
id += d2;
}
return id;
}
我必須對我的小java代碼進行哪些修改才能讀取和存儲變量中的SyncID消息序列號,該序號是十進制值?
感謝
大閱讀閱讀的數字,非常感謝, 有效!! – 2013-05-01 16:05:30