java - 大于 127 的字节值

标签 java byte

//好吧有道理

Byte b = (byte)207;
System.out.println(b); //value = 207

//ok 没有意义

Integer x = Integer.parseInt("11001111", 2); //207
Byte sens = (byte)x.intValue(); //207
System.out.println(sens); //Value = -49
System.out.println(sens.intValue()); //Value = -49

这是怎么回事?

我如何声明/表示一个值高于 127 的 8 位字节

最佳答案

Java 中的字节是有符号的,因此它们从 -128 变为 127。像这样强制转换 int 将获取 1 的高位(表示 two's complement 有符号数中的负数)并将其转换为负数-49。

从那里,当您使用 sens.intValue() 将其转换回整数时,它会拾取新的负值并返回它,因此您仍然会得到 -49。

不幸的是,您需要将大于 128 的字节存储在 int 数据类型中。

关于java - 大于 127 的字节值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14204883/

相关文章:

c# - 使用填充将字节数组转换为 int 数组

java - Eclipse 没有将我的项目识别为 Java

java - 在 Java 中从字节中查找位值的问题

c# - 如何读取字节和字符串的混合文件

c# - mvc c# 文件上传为字节数组

c# - 在 C# 中将字节数组转换为 int 数组时出错

java - 如何将 EDT 中的日期字符串转换为 UTC 日期?

java - tomcat 错误 404 - 源服务器未找到目标资源的当前表示或不愿意透露该资源的存在

java - 如何将 23214+3157x56 等数学表达式中的逗号表示为 23,214+3,157x56?

java - 如何在 java 文件选择器中访问隐藏的 linux 文件夹