【发布时间】:2018-03-20 22:59:32
【问题描述】:
我正在尝试这样做:
function handleFiles(files) {
var selectedFile = files[0];
var reader = new FileReader();
reader.readAsBinaryString(selectedFile);
reader.onloadend = function() {
var result = reader.result;
convert(result);
};
}
function convert(data) {
var img = document.createElement("img");
var result = data.toString(2);
document.body.appendChild(img);
img.src = 'data:image/jpeg;base64,' + btoa(data); // this works
console.log("Base ?: " + data); // not sure, I think 16 or more likely 64,
// the MDN documentation doesn't specify what base of binary is produced by the readAsBinaryString method
console.log("Base 2: " + result); // not base 2 binary data as expected
}
<input type="file" id="input" onchange="handleFiles(this.files)">
此代码会将 jpeg 转换为二进制数据,然后对其进行渲染,但它不是首先转换为 base 2 二进制。如果您运行该代码并查看日志,那就更多了(我对基数和二进制的主题很天真,但我的猜测是基数 16 或 64)。我认为toString(2) 应该转换为base 2,但它似乎没有这样做。在将其转换回基数 64 之前,我想将二进制数据转换为基数 2 进行实验。
【问题讨论】:
-
我已经阅读了所有我能找到的关于与此相关的所有方法和替代选项的文档,但我似乎无法弄清楚如何去做。
标签: javascript math binary