2016-06-06 5 views
1

나는 이것을 사용하는 생각을했다 :PHP에서 base64에서 16 진수로 변환하는 방법?

<?php 
$string1 = 'V2h5IEkgY2FuJ3QgZG8gdGhpcyEhISEh'; 
echo base64_decode($string1); 
?> 

이 예제의 출력은 항상 18 자이어야한다! 그러나 때때로이 출력은 18보다 작습니다.

24 (base64 문자)에 6을 곱한 값 (base64 문자 당 비트 수)은 144 (비트)를 8로 나눈 값 (ASCII 문자 당 비트 수)이 18 ASCII 문자와 같습니다.

문제는 출력이 일반 텍스트로 표시된다는 것입니다. 일부 문자에는 "텍스트 표현"이 없기 때문에 데이터가 손실됩니다. 다음 테스트에서는 출력이 보이지 않는 41 개의 ASCII 문자가 있음을 보여줍니다.

<?php 
for ($i = 0; $i <= 255; $i++) { 
    $string2 = chr($i); 
    echo $i . " = " . $string2 . "<br>"; 
} 
?> 

내 계획은 base64 문자열을 디코딩하고 ASCII 출력을 16 진수로 변환하는 것이 었습니다. 41 자로 인해 불가능합니다.

또한 base_convert을 시도했지만 기본 64 지원이 없습니다.

+4

'BIN2HEX()가'당신이에 관심이있을 수있는 내장 함수의 – mario

+3

가능한 복제 [변환은 base64'd SHA1은 해시를 16 진수에 해시 (HTTP :. // 유래. com/questions/2914504/convert-base64d-sha1-hashes-to-hex-hashes) – zanderwar

+2

참조 http://stackoverflow.com/questions/2914504/convert-base64d-sha1-hashes-to-hex-hashes – zanderwar

답변

2

당신은 bin2hex()으로이 작업을 수행 할 수 있습니다

는 STR의 16 진수 표현을 포함하는 ASCII 캐릭터 라인을 돌려줍니다. 변환은 먼저 높은 니블을 사용하여 바이트 단위로 수행됩니다.

php > $string1 = 'V2h5IEkgY2FuJ3QgZG8gdGhpcyEhISEh'; 
php > echo base64_decode($string1); 
Why I can't do this!!!!! 
php > echo bin2hex(base64_decode($string1)); 
57687920492063616e277420646f20746869732121212121 
php > 
0
<?php 
$string1 = 'V2h5IEkgY2FuJ3QgZG8gdGhpcyEhISEh'; 
$binary = base64_decode($string1); 
$hex = bin2hex($binary); 
echo $hex; 
?> 
관련 문제