如何在 Node.js 中将 '0' 和 '1'(如 01001001)一致的字符串解析为 base64 代码?



11月11日,一款在中国程序员中很受欢迎的游戏。第九个问题很难(对不起,该网址包含MD5和会话,我可以将其粘贴到此处)。有一些中文指南,带有英文关键字。甚至有人试图用哈斯克尔的一行来解决这个问题......

所以,问题:

给定一个字符串看起来像这样,并获取下一个问题的关键:

01001000 00110100 01110011 01001001 01000001 01000011 01001010 01001011
01101110 01101100 01000001 01000001 01000001 00101011 00110001 01011010
01000010 00110001

我将整个二进制字符串复制到此处的要点中:https://gist.github.com/4054140

根据指南,二进制代码可以读取为base64代码,然后可以显示为图像。

我的问题是:如何将这些二进制字符串解析为 base64 代码?

这些看起来像以 2 为基数的数字。如果是这种情况,您可以将每个数字的前 6 位(例如"010010")从第一组("01001000")中取出,并获取这 6 位的十进制值。在第一个数字的情况下,你会得到 18 个基数 10:

 base10 = parseInt("010010", 2) -> 18

下一步是获取该十进制数的 base64。根据此表 http://en.wikipedia.org/wiki/Base64 18 将映射到"S"

然后,您取下一组 6 位,即第一组 8 ("00") 中的剩余 2 位加上下一段 ("0011") 中的 4 位并执行相同的操作:

 base10 = parseInt("000011", 2) -> 3

同样,十进制 3 根据维基百科链接映射到"D"。

你会一直坚持下去,直到你处理完所有的位。

此页面包含有关如何将以 2 为基数的数字转换为以 10 为基数的一些信息: http://www.name-generators.com/javascript-2/how-to-make-binary-decimal-conversion-in-javascript.htm

我尽力解析它并得到了一个压缩包......到我的目的地只有一步,但是..

我在LiveScript中的解决方案,希望它有所帮助...

require! fs
require! buffer
require! path
require! zlib
{exec} = require child_process
show = console.log 
fs.read-file string.txt utf8 (err, file) ->
  # throw err if err?
  res = file
    .replace /_/g, '1'
    .replace /n/g, ' '
    .split ' '
    .map -> parse-int it, 2
    .map -> String.from-char-code it
    .join ''
  b = new Buffer res, base64
  zlib.gunzip b, (err, data) ->
    fs.write-file c.tar data

最新更新