传入的字节数据

时间:2015-01-15 17:30:32

标签: java android

我正在处理一个套接字连接,我在其中发送然后接收字节。我已经写了套接字代码,我可以发送和接收字节,但有一个问题......

我在一个名为Delphi的语言中发送数据,然后在android代码中接收它们。但我遇到了一些问题。

在delphi中,一个字节的最大值为255,而在Android中,最大字节数为127.你会如何解决这个问题?有没有办法使用无符号字节?我应该使用短裤而不是字节吗?

感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

要读取单个字节,您可以将其强制转换为更大的Java / Android基元类型,以通过执行按位&来将其解释为无符号值。 (AND)带有8位掩码。要将值作为无符号字节值写入套接字,请使用较大的基本类型来设置该值,然后将此值转换为一个字节以写入套接字。例如:

    short shortVal = 255;
    byte byteVal = (byte) shortVal;
    System.out.println("signed value = " + byteVal);
    shortVal = (short) (byteVal & 0xFF);
    System.out.println("unsigned value = " + shortVal);

Java / Android将字节解释为带符号值(在本例中为-1),但字节中的8位(11111111)仍然与短255中的最低有效8位(0000000011111111)相同。

相同的技术可以用于更大的类型(使用带有16位掩码的int将short解释为无符号,使用32位掩码将int解释为无符号),但是使用多字节值时要小心考虑字节的字节顺序。网络协议并在需要时转换字节顺序。