在我的代码中(doGet方法中的HttpServlet)我需要在.js文件中写入可以取0到255之间的任何值的字节。我在调试器中检查了结果[1]的值为0.但是,在外部文件中,它被写为空格,当我尝试读取它时,它的字节值为“32”。我只有字节0的这个问题,其余的这是完美的。有什么想法吗?
res.setContentType("image/gif");
res.setHeader("Content-Disposition","attachment;filename=myFile.js");
OutputStream os = res.getOutputStream();
byte[] result=encrypt(req.getParameter("original")); // Here result has values [64,0,81,80]
os.write(result,0,result.length);
我从外部JavaScript中检索值:
var whatever = data[1].charCodeAt(0); // whatever has value 32
我在Javascript程序中看到了类似的问题,他们在写入文件之前修复了这个问题,包括这个循环:
for (var i=0; i<result.length; i++) {
result[i] = String.fromCharCode(result[i]); }
我已经做了一些测试并适用于Javascript。 Java中的等价物是什么?
由于
答案 0 :(得分:1)
32是空格的ASCII值。这就是为什么你得到空白32。
答案 1 :(得分:1)
在Stackoverflow中已经回答了二进制数据:How do I read binary data to a byte array in Javascript?。
内容类型更好的是application/octet-stream
,没有内容处置标题。
答案 2 :(得分:0)