[Java]ByteBuffer的用處

ByteBuffer 的用處: 對一個byte buffer 能夠進行按short,int等讀取,讀取位置自動增長。 這樣能夠完成對一個byte buffer的基本解析。 其中order()會影響對short,int的解釋生成,是little endian, 仍是Big endian?java

如下是一個例子:code

<!-- lang: java -->
    private String waitSocketSignal(InputStream is) throws IOException {
    byte [] sig = new byte[SOCK_SIGNAL_SIZE];
    int ret = readAll(is, sig);
    if (VDBG) Log.d(TAG, "waitSocketSignal read 16 bytes signal ret: " + ret);
    ByteBuffer bb = ByteBuffer.wrap(sig);
    bb.order(ByteOrder.nativeOrder());
    int size = bb.getShort();
    if(size != SOCK_SIGNAL_SIZE)
        throw new IOException("Connection failure, wrong signal size: " + size);
    byte [] addr = new byte[6];
    bb.get(addr);
    int channel = bb.getInt();
    int status = bb.getInt();
    String RemoteAddr = convertAddr(addr);
    if (VDBG) Log.d(TAG, "waitSocketSignal: sig size: " + size + ", remote addr: "
            + RemoteAddr + ", channel: " + channel + ", status: " + status);
    if(status != 0)
        throw new IOException("Connection failure, status: " + status);
    return RemoteAddr;
}
相關文章
相關標籤/搜索