【发布时间】:2011-09-30 08:04:19
【问题描述】:
我知道这是一个非常愚蠢的问题,但我不知道该怎么做。
我有一个任意的二进制数,比如说,
1001000000110010000000100100000010000011000000010001000001011000110000110000011100011100000011000000010010011000100000000000000100100000010110001100001000000111
我想使用 PHP 将它转换为 Base 64 - 我尝试的每一种方式都会给我不同的结果。甚至不同的在线转换器也会以不同的方式对其进行转换:
http://home2.paulschou.net/tools/xlate/
http://convertxy.com/index.php/numberbases/
PHP 的 base_convert 仅适用于 base36,而 base64_encode 需要一个字符串。
我该怎么办?
UPDATE:我实现了@binaryLV建议的解决方案功能,效果很好。
但是,我将结果与 PHP 的内置 base_convert 进行了比较。事实证明,base_convert to base36 返回的值比自定义 base64 函数更短! (是的,我确实在所有二进制数前面加上了“1”,以确保前导零不会丢失)。
我也注意到,base_convert 对于大量数字非常不准确。所以我需要一个像base_convert一样工作的函数,但准确,最好是64进制。
【问题讨论】:
-
1) 想要将数字直接转换为base 64? - 2) 想要先将二进制数转换为 ASCII,然后再转换为基数 64? 3)还是什么?
-
@Mido - 我真的看不出 (1) 和 (2) 之间有什么区别 - 对我来说重要的是结果。我希望能够以一致的方式将二进制数(不是'0'和'1'的字符串)转换为base 64,然后能够将其转换回二进制。