out*_*lou 3 java int signed byte
我有这个方法将有符号或无符号转换byte为int,但它不返回它应该返回的内容.有人可以在下面的代码中指出问题吗?
public int convertByteToInt(byte[] b){
int value= 0;
for(int i=0;i<b.length;i++){
int n=(b[i]<0?(int)b[i]+256:(int)b[i])<<(8*i);
value+=n;
}
return value;
}
Run Code Online (Sandbox Code Playgroud)
编辑:
我正在读取一个wav文件以计算SNR.转换返回的值应该在0到255之间给出一些东西.应用程序应该比较2个wave文件,on是orignal one,另一个是修改的并计算SNR.
好的,所以你有一个big-endian字节数组,你要转换为int.我认为每个字节的值是多少都不重要; 你只需要将它们粘在一起:
public int convertByteToInt(byte[] b)
{
int value= 0;
for(int i=0; i<b.length; i++)
value = (value << 8) | b[i];
return value;
}
Run Code Online (Sandbox Code Playgroud)
如果我在这里遗漏了什么,请告诉我.
谢谢你的答案,但我发现问题来自其他地方,而不是来自转换方法,
还有另一个版本的方法
public int convertirOctetEnEntier(byte[] b){
int MASK = 0xFF;
int result = 0;
result = b[0] & MASK;
result = result + ((b[1] & MASK) << 8);
result = result + ((b[2] & MASK) << 16);
result = result + ((b[3] & MASK) << 24);
return result;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
39775 次 |
| 最近记录: |