我有20个字节的byte []。
我需要读取前4个字节并将其转换为单个无符号整数,然后转换为字符串。
字节生成一个大整数,因此当我转换为整数然后在字符串中时,我有一个负数。
示例:0x53、0x2D,0x78、0xAA。
我将它们转换为:
hash = bHash[0]|bHash[1]<<8|bHash[2]<<16|bHash[3]<<24;
keyid = String.valueOf(hash);
keyid = Integer.toString(hash);
在这两种情况下,我都有:“-1434964653”,但我需要生成“ 2860002643”。
最佳答案
由于Java中没有unsigned int,因此请使用long类型:
long hash = (bHash[0]|bHash[1]<<8|bHash[2]<<16|bHash[3]<<24)&0xFFFFFFFFl;
String keyid = String.valueOf(hash);
keyid = Long.toString(hash);