bun*_*ath 1 java byte masking bitwise-and
我的问题是这样的.
我在Java中有一些字节计算.在某些计算中,我在字节值中得到了我想要的结果"2a",但在某些计算中,我得到字节值为"ffffff9a".我只想从结果"ffffff9a"中输入"9a"值.我尝试了这个,但没有奏效.
byte a = (byte) b & 0xff;
Run Code Online (Sandbox Code Playgroud)
其中b的值为"ffffff9a"字节值.
但是显示相同的过程就像
System.out.println(Integer.toHexString(b & 0xff));
Run Code Online (Sandbox Code Playgroud)
我哪里错了?我能做些什么来获得我想要的价值?
谢谢
实际上我试图将8位字符转换为gsm 7位.如果有人可以帮我解决这个问题,那也会有所帮助.字符串存储为字节数组,我必须将此字符串或8位字节转换为7位.
小智 7
byteJava中的类型已签名.它的范围是[-128,127].
System.out.println(Integer.toHexString(a & 0xff)); // note a, not b
Run Code Online (Sandbox Code Playgroud)
将显示"正确的值",即使a是类型byte,将包含负值((byte)0x92).也就是说,(int)a == 0x92将是假的,因为演员int 保持价值,负面和所有,而(a & 0xff) == 0x92将是真实的.这是因为逐位&将表达式提升为int类型,同时"屏蔽掉""符号位"(不是真正的符号位,而是两个补码的伪影).
请参阅:Java如何"隐藏"字节
快乐的编码.
| 归档时间: |
|
| 查看次数: |
21443 次 |
| 最近记录: |