我有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);

07-28 08:45