我当时想用这个:
<?php
$string1 = 'V2h5IEkgY2FuJ3QgZG8gdGhpcyEhISEh';
echo base64_decode($string1);
?>
此示例的输出应始终为18个字符!但有时这个输出小于18。
24(base64个字符)乘以6(每个base64个字符的位数)等于144(位)除以8(每个ASCII字符的位数)等于18个ASCII字符。
问题是输出以纯文本显示;有些人物甚至没有&#34;文字表示&#34;并且数据将丢失。下一个测试将显示有41个不同的ASCII字符,没有可见的输出。
<?php
for ($i = 0; $i <= 255; $i++) {
$string2 = chr($i);
echo $i . " = " . $string2 . "<br>";
}
?>
我的计划是解码base64字符串,然后从ASCII输出中将其重新转换为十六进制。现在这是不可能的,因为这41个字符。
我也试过了base_convert
,但没有base64支持。
答案 0 :(得分:3)
您可以使用bin2hex()
执行此操作:
返回包含str的十六进制表示的ASCII字符串。首先使用高半字节按字节顺序完成转换。
php > $string1 = 'V2h5IEkgY2FuJ3QgZG8gdGhpcyEhISEh';
php > echo base64_decode($string1);
Why I can't do this!!!!!
php > echo bin2hex(base64_decode($string1));
57687920492063616e277420646f20746869732121212121
php >
答案 1 :(得分:2)
<?php
$string1 = 'V2h5IEkgY2FuJ3QgZG8gdGhpcyEhISEh';
$binary = base64_decode($string1);
$hex = bin2hex($binary);
echo $hex;
?>