gpt4 book ai didi

java - 将两个字节转换为 16 位有符号数

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:48:32 27 4
gpt4 key购买 nike

我有两个字节:

byte[0] 是 0000 0000

byte[1] 为 1000 0000

我想将它们放在一起并使它们成为一个浮点值。所以结果应该是十进制的 128 和二进制的 0000 0000 1000 0000。不是负数,因为前导零。

到目前为止,我的解决方案是这种方法:

float f = (bytes[0] << 8 | bytes[1]);

但这将导致值 f 的值为负 128。我猜是因为 2s 补码。因此 byte[1] 将被解释为负数。我如何才能将 byte[0] 的前导位视为负/正位?

最佳答案

试试这个:

short int16 = (short)(((bytes[0] & 0xFF) << 8) | (bytes[1] & 0xFF));

由于运算优先级,您需要使用括号。

一旦你有了 16 位整数,你就可以将它分配给你的 float :

float f = int16;

是的,你可以一步完成,但我想一步一步来。

关于java - 将两个字节转换为 16 位有符号数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18219274/

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