javascript - 在 Javascript 中从整数解码固定字符串

标签 javascript string integer

我看到两个 32 位整数,其中编码有固定长度的八个字符 ASCII 字符串。

例如,字符串“HEYTHERE”被拆分为“HEYT”和“HERE”,每个字节被拆分为四个字节,分别为 0x48455954 和 0x48455245 或 1212504404 和 1212502597。

在 Javascript 中将这两个数字转换回字符串的最有效方法是什么?

到目前为止,我有以下内容,但我想知道是否有更快/不那么笨拙的方法:

let xx1 = [ 1212504404, 1212502597 ];
let xx1str = String.fromCharCode((xx1[0] >> 24) & 255) +
    String.fromCharCode((xx1[0] >> 16) & 255) +
    String.fromCharCode((xx1[0] >> 8)  & 255) +
    String.fromCharCode( xx1[0]        & 255) +
    String.fromCharCode((xx1[1] >> 24) & 255) +
    String.fromCharCode((xx1[1] >> 32) & 255) +
    String.fromCharCode((xx1[1] >> 8)  & 255) +
    String.fromCharCode( xx1[1]        & 255); 

最佳答案

我认为你可以有一个包含两个字符或四个字符的哈希表。

hash2 = { '4040': 'AA', '4041': 'AB',
         '4845':'HE',
         '5954':'YT',
         '4845':'HE',
         '5245':'RE'
        }
function madDecode(num) {
  return hash2[num.toString(16).substr(0, 4)] 
  + hash2[num.toString(16).substr(4, 4)]

}
out.innerHTML = madDecode(0x40404041) +', '
  + madDecode(1212504404) + madDecode(1212502597)
<span id=out></span>

您可以通过使用 4 字符哈希来进一步改进。甚至进一步使用数组而不是对象。

hash2 = []

function chCode(x) {
  x = x.toString(16)
  while (x.length < 2) x = '0' + x
  return x
}

function makeHash() {
  for (var i = 32; i < 128; i++) {
    for (var j = 32; j < 128; j++) {
      hash2[parseInt(chCode(i) + chCode(j), 16)] = String.fromCharCode(i, j)
    }
  }
}

function arrDecode(num) {
  var na = (num & 0xffff0000) >> 16,
    nb = num & 0xffff
  return hash2[na] + hash2[nb]
}

makeHash()
document.write(arrDecode(1212504404) + arrDecode(1212502597))

关于javascript - 在 Javascript 中从整数解码固定字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26161318/

相关文章:

javascript - 我可以使用 JavaScript 删除 HTML 代码中的一行吗?

php - 对音乐播放器使用 Amazon S3 查询字符串身份验证

c# - 为什么这个 IndexOf 调用返回 -1?

java - 两个整数的中间值

java - 要求输入直到他输入数字?

javascript - 访问顶层函数的参数

javascript - jspdf lib 中 fromhtml 方法的问题

python - 计算列表中数字平方和的函数

java - 我如何在 Java 中实现一个字符串比较,无论它们是否匹配或不匹配(如果有)发生在哪里都需要相同的时间?

javascript - 使用 Google App 脚本替换 Google Sheet 中的文本而不重新格式化值