gpt4 book ai didi

java 将 int 转换为短整型

转载 作者:行者123 更新时间:2023-12-02 00:52:24 25 4
gpt4 key购买 nike

我正在计算我的数据的 16 位校验和,我需要将其发送到服务器,服务器必须重新计算并与提供的校验和匹配。我得到的校验和值是 int 格式,但我只有 2 个字节用于发送该值。因此,我在调用 shortToBytes 时将 int 转换为 short > 方法。这工作正常,直到校验和值小于 32767,此后我得到负值。

事情是java没有无符号原语,所以我无法发送大于允许的有符号short最大值的值。

我该如何做到这一点,将 int 转换为短整型并通过网络发送,而不必担心截断以及有符号和无符号 int。

另外,我的两侧都运行着 java 程序。

   private byte[] shortToBytes(short sh) {
byte[] baValue = new byte[2];
ByteBuffer buf = ByteBuffer.wrap(baValue);
return buf.putShort(sh).array();
}

private short bytesToShort(byte[] buf, int offset) {
byte[] baValue = new byte[2];
System.arraycopy(buf, offset, baValue, 0, 2);
return ByteBuffer.wrap(baValue).getShort();
}

最佳答案

您仍然获得与服务器相同的位值。因此,要查看正确的数值,请将 ByteBuffer.wrap(baValue).getShort() 替换为 ByteBuffer.wrap(baValue).getInt()。这应该为您提供与服务器相同的数值。

关于java 将 int 转换为短整型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2485643/

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