如何从MetaMessage.getData()返回的字节数组中获取整数值?

Lep*_*aun 1 java int midi bytearray javax.sound.midi

我需要从midi文件中获取速度值.我发现,set_tempo命令的值为0x51,所以我有这段代码:

    for (int i = 0; i < tracks[0].size(); i++) {
        MidiEvent event = tracks[0].get(i);
        MidiMessage message = event.getMessage();
        if (message instanceof MetaMessage) {
            MetaMessage mm = (MetaMessage) message;
            if(mm.getType()==SET_TEMPO){
                // now what?
                mm.getData();
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

但方法getData()返回一个字节数组!我怎样才能将它转换为普通的人形,又称整数?我已经读过它以这样的格式存储:"tt tt tt",但整个大/小端,签名/无符号和可变长度的东西使它太混乱了.

apa*_*gin 5

Tempo是一个3字节的大端整数,每分钟的Bits计算为
BPM = 60,000,000 / (tt tt tt)

byte[] data = mm.getData();
int tempo = (data[0] & 0xff) << 16 | (data[1] & 0xff) << 8 | (data[2] & 0xff);
int bpm = 60000000 / tempo;
Run Code Online (Sandbox Code Playgroud)