1
장치에서 보낸 이진 데이터를 해독하고 읽으려고하는데 이진 구조 안에있는 10 진수를 추출해야합니다. 자바를 사용하여 주어진 이진 구조체를 읽는 방법?
(2) 동기 메시지 포맷 타입 정의 구조체
{
WORD
SyncHeader;
WORD
SyncID;
DWORD UnitID;
} SyncStruct;
- SyncHeader 항상 0xf8fa
- SyncID 이다 된다 이 구조의 세부 사항이다 번호
예컨대, 수신 된 메시지는
0xFA 0xF8 0x1B 0x01 0x81 0x60 0x33 0x3C
- SyncHeader = 0xF8 0xFA
- SyncID =하는 0x01 0x1B (10 진 = 283)
- UnitID = 0x3C 0x33을 0x60으로는 0x81 (10 진 = 1,010,000,001)
구조가 잘 정의되어 있으므로 다른 구조를 읽지 만 동일한 원리를 구현하는 작은 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;
}
10 진수 값인 SyncID 메시지 시퀀스 번호 만 변수에 읽고 저장하려면 내 작은 Java 코드에 어떤 수정을해야합니까?
감사
그레이트 syncId 읽을 수 있습니다 그것은
에서 숫자를 읽을의 ByteBuffer를 사용 , 그것은 일했다!! –