0

我想显示音乐文件的二进制代码。但不知何故,下面的代码似乎不起作用。有什么建议么??

function binary() {
    var xmlhttp;
    if (window.XMLHttpRequest) {  // code for IE7+, Firefox, Chrome, Opera, Safari
        xmlhttp = new XMLHttpRequest();
    }
    else {  // code for IE6, IE5
        xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
    }
    xmlhttp.open("GET","1.wav",true);
    xmlhttp.overrideMimeType("text/plain; charset=x-user-defined");
    xmlhttp.onreadystatechange = function(buffer) {
        var binaryCode = "";
        if (xmlhttp.readyState==4 && xmlhttp.status==200) {
            var binStr = this.responseText;
            for (var i=0; i<binStr.length; i++) {
                var byte = binStr.charCodeAt(i) & 0xff;  // get byte at i
                binaryCode += byte;
            }   
        }
        document.getElementById("result").innerHTML = binaryCode; // should display binary code
    };
    xmlhttp.send();
}
4

2 回答 2

0

并非所有字节值都可以在字符串中表达,并且不会出现或导致字符串缩短。

XMLHttpResponse.ResponseText/ResponseXML 会将 http 响应内容作为字符串返回。例如,任何 0 字节值都将终止字符串。

让服务器返回字节的 Base64 表示并在客户端解码为字节值。

于 2012-10-10T10:38:49.090 回答
0

您的代码似乎在我的 chrome 浏览器上运行良好。您正在尝试的问题到底是什么?

您可能希望通过执行以下操作以十六进制形式显示二进制文件:

binaryCode += '0x' + byte.toString(16) + ' '

编辑:这个 jsfiddle 在我的 chrome 上工作:http: //jsfiddle.net/e6Kfk/

但是,我不认为这种方法是跨浏览器的,特别是如果你想处理 ie (虽然还没有测试过)

于 2012-10-10T11:03:55.250 回答