当我们在读取文件的时候,文件头部又一些数据读取出来时byte,我们需要转成int来获取真实值的时候,就需要将byte转成int。
举例:android自带的播放器不能播放wav,但是我们如果要播放wav我们就需要用到AudioTrack来播放wav中的pcm原始数据,因为播放pcm需要采样率,声道这些参数,我们可以从wav的文件头部中获取这些参数,就会用到这个转换。至于为什么能从文件头部获取,可以去了解下wav的格式。
直接上代码:
val file = File(filePath)
val fileInputStream = FileInputStream(file)
val out = ByteArrayOutputStream()
var b = 0
var read = true
while (read) {
b = fileInputStream.read()
if (b != -1) {
out.write(b)
} else {
read = false
}
}
val audioData = out.toByteArray()
val bytearray: ByteArray =
byteArrayOf(audioData[24], audioData[25], audioData[26], audioData[27])
val b1 = mutableListOf<Int>()
for (i in 0 until 4) {
if (bytearray[i] < 0)
b1.add(((bytearray.get(i) and 0x7f)+ 128).toInt())
else
b1.add(bytearray[i].toInt())
}
val result = (b1[3] shl 24) + (b1[2] shl 16) + (b1[1] shl 8) + b1[0]
fileInputStream.close()
result就是byte转成int的结果