gpt4 book ai didi

Java 按位右移 255 为字节值

转载 作者:行者123 更新时间:2023-12-01 15:08:21 24 4
gpt4 key购买 nike

我有一个短计数器,它会递增并用作标识符。我需要在网络套接字上将标识符作为二进制数据发送。

因此,如果我有一个短值,我可以这样做以将其“打包”为两个字节:

short id = 1;
byte val = (byte)(id & 0xFF);
byte val2 = (byte)((id >>> 8) & 0xFF);
System.out.printf("id=%d, val = id & 0xFF = %d, val2 = (id >>> 8) & 0xFF = %d\n",
id, val, val2);

现在,当 id = 1 时,效果很好。

但是当 id = 255 时我得到:

short id = 255;
byte val = (byte)(id & 0xFF); //val = -1
byte val2 = (byte)((id >>> 8) & 0xFF); //val2 = 0

现在我知道二进制的 255 是 11111111,这意味着 java 字节值是 -1。我是否正确地认为java如何解释它是无关紧要的,如果我以字节二进制11111111发送,那么在另一端它可以根据需要解释它?

最佳答案

是的,你的想法是对的。

仅供您引用:有一个非常好的类(class)可以为您完成此操作。它被称为DataInputStreamDataOutputStream .

Socket socket = ...;
DataInputStream dis = new DataInputStream(socket.getInputStream());
DataOutputStream dos = new DataOutputStream(socket.getOutputStream());

/* Write a short */
short out = 255;
dos.writeShort(out);

/* Read a short */
short in = dis.readShort();

关于Java 按位右移 255 为字节值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12662988/

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