簡體   English   中英

Java 1.7字節數組到BitSet不起作用

[英]Java 1.7 Byte Array to BitSet not working

try {
    new BitSet();

    byte[] packetData = new byte[receivePacket.getLength()];                
    packetData = receivePacket.getData();
    bits = BitSet.valueOf(packetData);  

    byte_header = Arrays.copyOfRange(packetData,0,12);
    byte_header_id = Arrays.copyOfRange(byte_header,0,2);
    byte_header_flags = Arrays.copyOfRange(byte_header,2,4);

    BitSet bits_packetData = BitSet.valueOf(receivePacket.getData());
    BitSet bits_header = BitSet.valueOf(byte_header);
    BitSet bits_header_flags = BitSet.valueOf(byte_header_flags); 

    System.out.println("packetData length:         " + receivePacket.getLength());
    System.out.println("byte_header length:        " + byte_header.length);
    System.out.println("byte_header_flags length:  " + byte_header_flags.length);
    System.out.println("bits_packetData length:    " + bits_packetData.size());
    System.out.println("bits_header length:        " + bits_header.size());
    System.out.println("bits_header_flags length:  " + bits_header_flags.size());

} catch (Exception ex) { ex.printStackTrace(); }

背景:以上是從發送到客戶端的UDP數據包中提取數據,並從該數據包中提取數據。 看似異常的輸出如下:

packet數據長度:44
byte_header長度:12
byte_header_flags長度:2
bits_packet數據長度:384
bits_header長度:64
bits_header_flags長度:64

在這里看起來正確的唯一數字是packetData長度,byte_header_length和byte_header_flags_length。 packetData字節* 8位不等於384。byte_header_length * 8位不等於64,byte_header_flags_length * 8位肯定不等於64!

誰能澄清我做錯了什么,並指出正確的方向嗎?

謝謝!

BitSet大小方法無法達到您的預期。

BitSet大小的實現碰巧使用long來保存位。 因此,您將看到64的倍數大小。

BitSet長度方法返回BitSet的邏輯大小。 這可能是您應該使用的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM