如何在php中从base64转换为十六进制?

时间:2016-06-06 00:58:26

标签: php

我当时想用这个:

<?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支持。

2 个答案:

答案 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;
?>