Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在PHP中将base64转换为base10?_Php_Algorithm_Base Conversion - Fatal编程技术网

如何在PHP中将base64转换为base10?

如何在PHP中将base64转换为base10?,php,algorithm,base-conversion,Php,Algorithm,Base Conversion,我目前在PHP中将base10数字转换为base64。 但是我不知道如何在php中将base64转换为base10 我怎么做 我将base10转换为base64的算法: $rep = array('0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','A','B',

我目前在PHP中将base10数字转换为base64。 但是我不知道如何在php中将base64转换为base10

我怎么做

我将base10转换为base64的算法:

$rep = array('0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','-','_');
$new = "";
while ($num>0) {
    $r = $num % 64;
    $new .= $rep[$r];
    $num = floor($num/64);
}

下面是一种Javascript方法。也许您可以为php编写一个

var ALPHABET = {'-': 62, '1': 53, '0': 52, '3': 55, '2': 54, '5': 57, '4': 56, '7': 59, '6': 58, '9': 61, '8': 60, 'A': 0, 'C': 2, 'B': 1, 'E': 4, 'D': 3, 'G': 6, 'F': 5, 'I': 8, 'H': 7, 'K': 10, 'J': 9, 'M': 12, 'L': 11, 'O': 14, 'N': 13, 'Q': 16, 'P': 15, 'S': 18, 'R': 17, 'U': 20, 'T': 19, 'W': 22, 'V': 21, 'Y': 24, 'X': 23, 'Z': 25, '_': 63, 'a': 26, 'c': 28, 'b': 27, 'e': 30, 'd': 29, 'g': 32, 'f': 31, 'i': 34, 'h': 33, 'k': 36, 'j': 35, 'm': 38, 'l': 37, 'o': 40, 'n': 39, 'q': 42, 'p': 41, 's': 44, 'r': 43, 'u': 46, 't': 45, 'w': 48, 'v': 47, 'y': 50, 'x': 49, 'z': 51};

function decode(s) {
    var n = 0;
    for(var i=0; i < s.length; i++) {
        var c = s.charAt(i);
        n = n * 64 + ALPHABET[c];
    }
    return n;
}

console.log(decode('EqfyK'));
var字母表={'-':62,'1':53,'0':52,'3':55,'2':54,'5':57,'4':56,'7':59,'6':58,'9':61,'8':60,'A':0,'C':2,'B':1,'E':4,'D':3,'G':6,'F':5,'I':8,'H':7,'K':10,'J':9,'M':12,'L':11,'O':14,'N':13,'Q':16,'P':15,'S':18,'R':17,'U':20,'T':19,'W':22,'V':21,'Y':24,'X''"b":27,"e":30,"d":29,"g":32,"f"31,"i"34,"h"33,"k"36","j"35,"m"38"l;
功能解码{
var n=0;
对于(变量i=0;i
这里是一种Javascript方法。也许您可以为php编写一种

var ALPHABET = {'-': 62, '1': 53, '0': 52, '3': 55, '2': 54, '5': 57, '4': 56, '7': 59, '6': 58, '9': 61, '8': 60, 'A': 0, 'C': 2, 'B': 1, 'E': 4, 'D': 3, 'G': 6, 'F': 5, 'I': 8, 'H': 7, 'K': 10, 'J': 9, 'M': 12, 'L': 11, 'O': 14, 'N': 13, 'Q': 16, 'P': 15, 'S': 18, 'R': 17, 'U': 20, 'T': 19, 'W': 22, 'V': 21, 'Y': 24, 'X': 23, 'Z': 25, '_': 63, 'a': 26, 'c': 28, 'b': 27, 'e': 30, 'd': 29, 'g': 32, 'f': 31, 'i': 34, 'h': 33, 'k': 36, 'j': 35, 'm': 38, 'l': 37, 'o': 40, 'n': 39, 'q': 42, 'p': 41, 's': 44, 'r': 43, 'u': 46, 't': 45, 'w': 48, 'v': 47, 'y': 50, 'x': 49, 'z': 51};

function decode(s) {
    var n = 0;
    for(var i=0; i < s.length; i++) {
        var c = s.charAt(i);
        n = n * 64 + ALPHABET[c];
    }
    return n;
}

console.log(decode('EqfyK'));
var字母表={'-':62,'1':53,'0':52,'3':55,'2':54,'5':57,'4':56,'7':59,'6':58,'9':61,'8':60,'A':0,'C':2,'B':1,'E':4,'D':3,'G':6,'F':5,'I':8,'H':7,'K':10,'J':9,'M':12,'L':11,'O':14,'N':13,'Q':16,'P':15,'S':18,'R':17,'U':20,'T':19,'W':22,'V':21,'Y':24,'X''"b":27,"e":30,"d":29,"g":32,"f"31,"i"34,"h"33,"k"36","j"35,"m"38"l;
功能解码{
var n=0;
对于(变量i=0;i
如果您试图使用数字文字编写用于基本转换的PHP代码,那么这可能是不可能的

PHP似乎实际上并没有处理十六进制文字(或者八进制),显然,当解析十六进制时,PHP会在使用之前在内部将十六进制转换为十进制

下面是几个演示这一点的场景(查看PHP使用的数字文字符号)

呼应 数字文字在输出之前解析为其十进制等效值

// code       output

echo 26;      // 26
echo 0x1A;    // 26
基转换 使用PHP函数
base\u convert()
可以更好地演示PHP在使用前如何将十六进制转换为十进制。(检查)

按照标准用法,我们将十六进制0x1A转换为十进制,反之亦然

echo base_convert('0x1A', 16, 10);       // 26
echo base_convert('26', 16, 10);         // 1a
echo base_convert(0x1A, 16, 10);         // 38
echo base_convert(26, 10, 16);           // 1a
现在对于非标准用法,十进制到十六进制可以很好地工作,但反之亦然

echo base_convert('0x1A', 16, 10);       // 26
echo base_convert('26', 16, 10);         // 1a
echo base_convert(0x1A, 16, 10);         // 38
echo base_convert(26, 10, 16);           // 1a
显然,十六进制
0x1A
在使用前在内部转换为十进制
26
。这可以通过将十六进制
'26'
转换为十进制来证明

echo base_convert(0x1A, 16, 10);         // 38
echo base_convert(26, 16, 10);           // 38

如果您正试图使用数字文字编写用于基本转换的PHP代码,那么这可能是不可能的

PHP似乎实际上并没有处理十六进制文字(或者八进制),显然,当解析十六进制时,PHP会在使用之前在内部将十六进制转换为十进制

下面是几个演示这一点的场景(查看PHP使用的数字文字符号)

呼应 数字文字在输出之前解析为其十进制等效值

// code       output

echo 26;      // 26
echo 0x1A;    // 26
基转换 使用PHP函数
base\u convert()
可以更好地演示PHP在使用前如何将十六进制转换为十进制。(检查)

按照标准用法,我们将十六进制0x1A转换为十进制,反之亦然

echo base_convert('0x1A', 16, 10);       // 26
echo base_convert('26', 16, 10);         // 1a
echo base_convert(0x1A, 16, 10);         // 38
echo base_convert(26, 10, 16);           // 1a
现在对于非标准用法,十进制到十六进制可以很好地工作,但反之亦然

echo base_convert('0x1A', 16, 10);       // 26
echo base_convert('26', 16, 10);         // 1a
echo base_convert(0x1A, 16, 10);         // 38
echo base_convert(26, 10, 16);           // 1a
显然,十六进制
0x1A
在使用前在内部转换为十进制
26
。这可以通过将十六进制
'26'
转换为十进制来证明

echo base_convert(0x1A, 16, 10);         // 38
echo base_convert(26, 16, 10);           // 38

以下是Steve回答中Javascript的PHP版本:

function lengthen($id) {
    $alphabet='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_-';

    $number=0;
    foreach(str_split($id) as $letter) {
        $number=($number*64) + strpos($alphabet,$letter);
    }
    return $number;
}
请注意,字母表与您的不同。字母表基于以下答案:
以下是Steve回答中Javascript的PHP版本:

function lengthen($id) {
    $alphabet='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_-';

    $number=0;
    foreach(str_split($id) as $letter) {
        $number=($number*64) + strpos($alphabet,$letter);
    }
    return $number;
}
请注意,字母表与您的不同。字母表基于以下答案:

如何将base64数字存储为数字或字符串表示形式?如果是后者,则数字的值有多大?相关:了解如何生成base64输出很重要;也许输入/输出的一个小示例也会有所帮助,或者代码……某物:)如何将base64数字存储为数字,或者作为字符串表示法?如果是后者,则数字的值有多大?相关:了解如何生成base64输出很重要;也许输入/输出的一个小示例也会有帮助,或者代码…什么:)但这是针对Base16的。base64呢?base_convert函数显然在base上不起作用它高于36左右。但这是针对基数16的。那么基数64呢?基数转换函数显然不适用于高于36左右的基数。你能解释一下这个代码是如何工作的,特别是字母表中的配对是什么意思,以及你是如何创建的吗?你能解释一下这个代码是如何工作的,特别是字母表中的配对是什么吗
字母表的意思以及您是如何创建的?