我正在尝试解码和读取从设备发送的二进制数据,我需要提取二进制结构内的十进制数。这是结构细节:
(2) 同步消息格式 typedef struct
{
WORD
SyncHeader;
WORD
SyncID;
DWORD UnitID;
} SyncStruct;
- SyncHeader 始终为 0xf8fa
- SyncID 是消息序列号
- UnitID 是单位标识号
例如,收到的消息是
0xFA 0xF8 0x1B 0x01 0x81 0x60 0x33 0x3C
- 同步头 = 0xF8 0xFA
- SyncID = 0x01 0x1B(十进制 = 283)
- UnitID = 0x3C 0x33 0x60 0x81(十进制 = 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 消息序列号并将其存储在变量中,该序列号是十进制值?
谢谢