2011-04-22 41 views
4

例如,假设我想将一个64位有符号整数编码为base64,我如何(如果可能)在Javascript中执行此操作?为了澄清,我想编码数据的实际位/字节,而不是数据的字符串或字符串表示。如何使用Javascript将任意字节/数据编码为base64格式?

I.e.十进制中的整数15等于二进制中的0000 1111,这与base64形式中的Dw ==相等。

我不想编码整数15的字符串表示形式。作为比较,如果您在base64中编码字符串“15”,实际上编码为0011 0001 0011 0101,这会给你MTU = base64形式(这是window.atob()所做的)。

+0

你为什么要这么做?即谁将会使用base64编码版本的数据?什么是你需要一个整数的二进制表示的基本要求是什么? – ewh 2011-04-22 19:31:03

+0

您要求提供“64位”数据。因此,你的15实际上是'00000000 00000000 00000000 00000000 00000000 00000000 00000000 00001111',并且对于你的8位示例,它将编码为“”AAAAAAAAAA8 =“'而不是'”DW ==“'。 – 2011-04-22 19:44:05

回答

3

首先转换为字符串,然后用其他的标准B64编码器BTOA或一个:

window.btoa(String.fromCharCode(15)); // Dw== 
2

您可以在支持它的浏览器中使用window.btoa(),在其他浏览器中可以使用this encoder

--edit

你将不得不把它写自己所有,任何为你传递到“window.btoa”是会得到先转换为字符串。 This answer可能是一个很好的开始;虽然Gears已经停产,但很多相关功能都在HTML5/W3C File API,其中有some experimental implementations

+0

我说的是任意数据,而不是字符串。 – Oaa 2011-04-22 18:19:16

+0

@OaA啊,好的。然后它变得更复杂一点。 – robertc 2011-04-22 21:34:11

相关问题