如何在javascript中编码/解码ascii85
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在javascript中编码/解码ascii85相关的知识,希望对你有一定的参考价值。
我正在寻找Base64
的替代方案,它可以在Unicode字符上正常工作。我发现ASCII85
工作得很好,但我发现在JS
没有代码或命令。
我刚刚找到this link,它不适用于国际字符,不包括解码功能。
甚至在C语言中发现codes这样做(我没有足够的JS数据处理知识来转换)。
还有一些我不知道怎么跑的codes。
我听说JQuery
确实支持Base64
,但它似乎不支持Ascii85
。
有人对JS中的Ascii85
有什么了解吗?
谢谢
答案
使用dojo.js框架:
摘要:
dojo.require("dojox.encoding.ascii85");
var dc = dojox.encoding
var buf = dc.ascii85.decode("")
var a85 = dc.ascii85.encode("");
另一答案
纯javascript Ascii85 AKA Base85编码/解码功能:
function encode_ascii85(a) {
var b, c, d, e, f, g, h, i, j, k;
for (!/[^x00-xFF]/.test(a), b = "x00x00x00x00".slice(a.length % 4 || 4), a += b,
c = [], d = 0, e = a.length; e > d; d += 4) f = (a.charCodeAt(d) << 24) + (a.charCodeAt(d + 1) << 16) + (a.charCodeAt(d + 2) << 8) + a.charCodeAt(d + 3),
0 !== f ? (k = f % 85, f = (f - k) / 85, j = f % 85, f = (f - j) / 85, i = f % 85,
f = (f - i) / 85, h = f % 85, f = (f - h) / 85, g = f % 85, c.push(g + 33, h + 33, i + 33, j + 33, k + 33)) :c.push(122);
return function(a, b) {
for (var c = b; c > 0; c--) a.pop();
}(c, b.length), "<~" + String.fromCharCode.apply(String, c) + "~>";
}
function decode_ascii85(a) {
var c, d, e, f, g, h = String, l = "length", w = 255, x = "charCodeAt", y = "slice", z = "replace";
for ("<~" === a[y](0, 2) && "~>" === a[y](-2), a = a[y](2, -2)[z](/s/g, "")[z]("z", "!!!!!"),
c = "uuuuu"[y](a[l] % 5 || 5), a += c, e = [], f = 0, g = a[l]; g > f; f += 5) d = 52200625 * (a[x](f) - 33) + 614125 * (a[x](f + 1) - 33) + 7225 * (a[x](f + 2) - 33) + 85 * (a[x](f + 3) - 33) + (a[x](f + 4) - 33),
e.push(w & d >> 24, w & d >> 16, w & d >> 8, w & d);
return function(a, b) {
for (var c = b; c > 0; c--) a.pop();
}(e, c[l]), h.fromCharCode.apply(h, e);
}
var myString='This is a test!';
var encoded=encode_ascii85(myString);
var decoded=decode_ascii85(encoded);
document.write(decoded);
另一答案
你可以使用我的JavaScript ASCII85 (Base85) implementation,它可以兼容字节数组和字符串
以上是关于如何在javascript中编码/解码ascii85的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 java 对从 javascript 到 servletpage 的查询字符串进行编码和解码?