gpt4 book ai didi

java - 传入数据字节数

转载 作者:行者123 更新时间:2023-12-01 12:01:17 26 4
gpt4 key购买 nike

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

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

在 delphi 中,一个字节的最大值为 255,而在 Android 中,最大字节为 127。您将如何解决这个问题?有没有办法使用无符号字节?我应该使用 Shorts 而不是 bytes 吗?

感谢任何帮助。

最佳答案

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

    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 位掩码的 long 将 int 解释为无符号),但对于多字节值,请小心考虑以下字节序:网络协议(protocol)并根据需要转换字节顺序。

关于java - 传入数据字节数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27969429/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com