首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在javascript中对ascii85进行编码/解码

如何在javascript中对ascii85进行编码/解码
EN

Stack Overflow用户
提问于 2013-06-19 15:00:46
回答 3查看 5.5K关注 0票数 7

我一直在寻找Base64的替代品,它可以很好地处理Unicode字符。我发现了ASCII85,它工作得很好,但是我在JS中找不到这样做的代码或命令。

我刚刚发现了this link,它不支持国际字符,也不包含解码功能。

这里有在线的Decoder/Encoder

甚至在C语言中发现了codes (我没有足够的JS数据处理知识来进行转换)。

还有一些我不知道怎么运行的codes

我听说JQuery确实支持Base64,但似乎不支持Ascii85

是否有人了解JS中的Ascii85,这可能会对您有所帮助?

谢谢

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-06-19 15:31:43

使用dojo.js框架:

Decode Example + source

Encode Example + source

ascii85 Encoding using

摘要:

代码语言:javascript
复制
dojo.require("dojox.encoding.ascii85");
var dc = dojox.encoding
var buf = dc.ascii85.decode("")
var a85 = dc.ascii85.encode("");
票数 3
EN

Stack Overflow用户

发布于 2015-07-31 16:03:22

Pure JavaScript Ascii85 AKA Base85编解码功能:

代码语言:javascript
复制
function encode_ascii85(a) {
  var b, c, d, e, f, g, h, i, j, k;
  for (!/[^\x00-\xFF]/.test(a), b = "\x00\x00\x00\x00".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);

票数 10
EN

Stack Overflow用户

发布于 2018-03-04 14:41:17

您可以使用我的JavaScript ASCII85 (Base85) implementation,它既可以处理字节数组,也可以处理字符串

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17184813

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档