Android:从AssetStream中丢失数据? (读取MIDI数据不准确)

时间:2012-04-27 14:13:13

标签: android stream midi assets

我想从资产流中读取MIDI数据。根据Windows,该文件是长度为150字节的MIDI0文件。使用此代码,我读取了由count测量的150个字节,但输出字符串仅为127.5个字节。

        try {
            assetStream = assets.open("MIDI0_7.mid");
            int count=0;
            do {
                byteValue = assetStream.read();
                count++;
                outputString = outputString + Integer.toHexString(byteValue);               
            } while (byteValue > -1) ;
            Log.d("MUSIC", "Final string " +outputString);
            Log.d("MUSIC", "bytes read " +count);
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

此读取的HEX数据也与MIDI规范AFAICT不匹配。开放的8个字节应该是

4d 54 68 64 00 00 00 06

但我得到

4d 54 68 64 00 06

我不能确定我的MIDI文件的保存格式(带有来自Cakewalk SONAR的7个音符的导出测试文件)所以我不确定为什么MIDI不符合标准,但在我能解决之前我需要知道我的遗失数据在哪里!看到从输出流中删除了一些字节,我做错了什么?

编辑: 好的,找到了。小于16的字节由Integer.toHexString()作为单个字符返回,而不是0x数字。轻松修复。

0 个答案:

没有答案