Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 下载二进制格式的字节数组_Javascript_Arrays_Binary - Fatal编程技术网

Javascript 下载二进制格式的字节数组

Javascript 下载二进制格式的字节数组,javascript,arrays,binary,Javascript,Arrays,Binary,我正在编写这段代码,我想下载一个字节数组,它在这一点上起作用,但下载的文件是用ascii编码的 下载的文件显示 “65,66,67,0,0,0,0,0,0” 但我在等“ABC” 如何更改此代码以获取二进制格式的文件 <!DOCTYPE html> <html> <body> <h1>Writing a binary file</h1> <script> var dados = new Int8Array(

我正在编写这段代码,我想下载一个字节数组,它在这一点上起作用,但下载的文件是用ascii编码的

下载的文件显示 “65,66,67,0,0,0,0,0,0”

但我在等“ABC”

如何更改此代码以获取二进制格式的文件

<!DOCTYPE html>
<html>

<body>

<h1>Writing a binary file</h1>

<script>
    
  var dados = new Int8Array(10);

  dados[0]=65;
  dados[1]=66;
  dados[2]=67;
  
  function download()
  {
    let element = document.createElement('a');
    element.setAttribute('href', 'data:application/octet-stream,' + dados );
    element.setAttribute('download', "teste.bin" );
    element.style.display = 'none';
    document.body.appendChild(element);
    element.click();
    document.body.removeChild(element);
  }
  download();


</script>

</body>
</html>


写入二进制文件
var dados=新的Int8Array(10);
护墙板[0]=65;
护墙板[1]=66;
护墙板[2]=67;
函数下载()
{
let element=document.createElement('a');
setAttribute('href','data:application/octet stream',+dados);
element.setAttribute('download','teste.bin');
element.style.display='none';
document.body.appendChild(元素);
元素。单击();
document.body.removeChild(元素);
}
下载();

好的-现在我知道发生了什么

感谢您更新您的帖子:)

您无意中将Int8Array“dados”转换为文本字符串。哎呀

以下是另一种方法:

<!DOCTYPE html>
<html>
<body>

<h1>Writing a binary file</h1>

<script>  
  function download(bytes, fname)  {
    debugger;
    let blob = new Blob([bytes], {type:"application/octet-stream"});
    let link = document.createElement('a');
    link.href = window.URL.createObjectURL(blob);
    link.download = fname;
    link.click();
  }

  let dados = new Int8Array(10);
  dados[0]=65;
  dados[1]=66;
  dados[2]=67;

  download(dados, "teste.bin"); 
</script>

</body>
</html>

写入二进制文件
函数下载(字节,fname){
调试器;
设blob=newblob([bytes],{type:“application/octet stream”});
让link=document.createElement('a');
link.href=window.URL.createObjectURL(blob);
link.download=fname;
link.click();
}
设dados=新的Int8Array(10);
护墙板[0]=65;
护墙板[1]=66;
护墙板[2]=67;
下载(dados,“teste.bin”);
我也会考虑特里莫尔斯关于使用

的极好建议。
“希望有帮助

“下载的文件是用ascii编码的。”问:这到底是什么意思?你有文件(“teste.bin”)吗?是3个字节(65、66、67)?哪一个碰巧映射到ASCII字母“A”、“B”和“C”?请澄清您的问题。您是否考虑过使用
fetch()
?它将以您指定的任何格式将数据保存到文件中。这些值只是一个例子。此代码是自定义视频应用程序的一部分,用户将在其中编辑视频并生成此.bin文件并下载它。我一直都在使用这个视频应用程序,但是下载的文件是ascii格式的,所以一个数组字节在下载的文件上最多占用3个字节。我想把每个数组字节放在一个字节中。我是一个使用C语言的固件开发人员,这些WEB语言对我来说是新的。我来看看fetch()。