Android byte转Int

555 阅读1分钟

当我们在读取文件的时候,文件头部又一些数据读取出来时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的结果