【发布时间】:2018-08-10 22:36:14
【问题描述】:
简介
大家好, 我目前正在开发一个基于 JavaScript 的 3d 切片工具(SLAcer.js - 顺便说一句很棒的工作),它可以为我便宜的 dlp 打印机(SparkMaker)生成方便的打印文件。 打印文件由一些 G 代码和简单的二进制层/图像组成(请参阅here)。
我已经能够生成 G-Code 和一个包含二进制层相关信息的 Uint8Array。 当前,所有 G 代码和二进制层都连接为字符串(可能是第一个问题),最后可以作为 zip 文件的一部分作为打印文件 (.wow) 下载。 (项目默认 JSZip 框架)(见here)
我苦苦挣扎的地方是:
我无法为二进制层获得正确的 TextEncoding 以匹配原始二进制层。
var array = new Uint8Array(width*height/8);
var binary_layer;
已经尝试了几件事,包括:
binary_layer=(new TextDecoder("utf-8")).decode(array) /*with different text encodes*/
也试过了:
binary_layer=bin2string(array)
function bin2string(array){
var result = "";
for(var i = 0; i < array.length; ++i){
result+= (String.fromCharCode(array[i]));
}
console.log(result);
return result;
}
令我惊讶的是,当将每个 Uint8Array 导出为单独的二进制 txt 文件时,它们几乎完全匹配所需/原始模式
串联:
file_contents = "[some gecode]";
file_contents += binary_layer;
总结
var staring = "hello";
var array = new Uint8Array(2);
array[0]=255;
array[1]=0;
想要的文件内容(文本和原始二进制文件 - utf8):
hello(xFF)(NUL)
这听起来很容易,但就正确的编码而言,它不是:
【问题讨论】:
标签: javascript file binary slicers 3d-printing