字节和字符串转换[校验和]

时间:2015-03-15 17:16:01

标签: java string udp bytearray checksum

我有一个文件需要通过UDP可靠地传输(我知道TCP是更好的选择)。因此,我需要校验和来验证数据的一致性。

在发件人处,我使用以下代码格式化了数据包:

static class Generator {

    public static byte[] format(String type, int sequence_no, byte[] data) {

        String header = type + "|" + sequence_no + "|" + Validator.getChecksum(data) + "|";
        String temp = new String(data, 0, data.length); 
        String combine = header + temp;

        return combine.getBytes();
    }
}

这将返回我将发送的数据的最后一个字节。

static class Validator {

    public static String getChecksum(byte[] bytes) {
        CRC32 crc = new CRC32();
        crc.update(bytes, 0, bytes.length);
        return crc.getValue() + "";
    }
  }  

BufferedFileReader会将数据读入字节数组,该字节数组将发送到此Generate.format方法以附加相应的标题信息。

然而,在我的接收器端,我似乎无法获得相同数量的字节,尽管数据“看起来相同”

  String raw = new String(packet.getData(), 0, packet.getLength());
  String[] split = raw.split("\\|");
  System.out.println(split[3].getBytes().length);

我怀疑缓冲区中的字节不完全等同于接收到的字符串,导致接收器获得不同的输出。

有人发现错了吗?

0 个答案:

没有答案