gpt4 book ai didi

Java:无符号字节到 int 的转换工作完美,除了 129 (0x81) 之外

转载 作者:行者123 更新时间:2023-12-01 23:48:59 27 4
gpt4 key购买 nike

我在 Java 中将无符号字节转换为 int 时遇到了一个奇怪的问题。十六进制值 0x81(十进制 129)总是被错误地解释为 63。所有其他值都正常工作。也许这是因为字节在转换之前存储在字符串中。

//some string
String text=new String(bytearray);
//create an iterator to go through the bytes
byte[] bytes=text.getBytes();
List<Byte> list=new ArrayList<Byte>();
for(byte i:bytes){
list.add(i);
}
Iterator<Byte> it=list.iterator();
while(it.hasNext()){
//bitwise AND 0xFF to remove 2's complement
int a=it.next()&0xFF;
}

有什么办法可以解决这个问题吗?

解决方案

//some string, this time I use a char[] to fill it.
String text=new String(chararray);
//create an iterator to go through the bytes
char[] chars=text.toCharArray();
List<Byte> list=new ArrayList<Byte>();
for(char i:chars){
list.add((byte)i);
}
Iterator<Byte> it=list.iterator();
while(it.hasNext()){
//bitwise AND 0xFF to remove 2's complement
int a=it.next()&0xFF;
}

最佳答案

字节数据类型是一个8位带符号的二进制补码整数。它的最小值为 -128,最大值为 127(含)。

关于Java:无符号字节到 int 的转换工作完美,除了 129 (0x81) 之外,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16553714/

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