在 PHP 中将 HEX 转换为 ANSI
Convert HEX to ANSI in PHP
我正在编写一种十六进制查看器,用户在其中输入可执行文件和页面 return 旁边是十六进制转储和 ANSI 表示形式。 (实际上我不知道为什么要使用 ANSI,但是我正在使用的十六进制编辑器 returns 使用这个的结果)
像这样:
但是我的代码 return 是这样的:
我不知道我做错了什么,我尝试了其他代码,它 return 编辑了所有字符,但我需要将一些字节 return 变成一个点“ 。”,正如您在印刷品中看到的那样。
这是我的代码:
<?php
function hex2str($hex) {
$str = '';
for($i=0;$i<strlen($hex);$i+=2) $str .= chr(hexdec(substr($hex,$i,2)));
return $str;
} // i found this function on internet to convert HEX to String
$nome = "apateDNS.exe";//the name of the file
$arquivo = fopen($nome, "r");
$read = fread($arquivo,filesize($nome));
$hex = bin2hex($read);// return the hex of the binary
$hehe = chunk_split(strtoupper($hex), 2, " ");// split the hex each 2 bytes
$haha = str_split($hehe, 48); //split the hex each 48 characters (32 bytes + 16 blank spaces)
foreach($haha as $linha => $i){
echo "0000000".dechex($linha*16);
echo " ".$i." ".hex2str($i)."<br>";
}
?>
已解决: 我忘了删除函数中的空格...
$hex = str_replace(" ", "", $hex);
function hex2str($hex) {
$str = '';
for($i=0;$i<strlen($hex);$i+=2) {
$decValue = hexdec(substr($hex,$i,2));
if($decValue < 32) {
$str .= '.';
} else {
$str .= chr($decValue);
}
}
return $str;
}
要生成所有十六进制代码的 table 及其翻译,请使用此代码:
for($x = 0; $x < 16; $x++) {
$bin = $txt = array();
for($y = 0; $y < 16; $y++) {
$num = dechex($x * 16 + $y);
if(strlen($num) == 1) $num = '0' . $num;
$bin[] = $num;
$txt[] = hex2str($num);
}
echo (implode(' ',$bin) . ' ' . implode(' ',$txt)) . '<br/>';
}
我正在编写一种十六进制查看器,用户在其中输入可执行文件和页面 return 旁边是十六进制转储和 ANSI 表示形式。 (实际上我不知道为什么要使用 ANSI,但是我正在使用的十六进制编辑器 returns 使用这个的结果)
像这样:
但是我的代码 return 是这样的:
我不知道我做错了什么,我尝试了其他代码,它 return 编辑了所有字符,但我需要将一些字节 return 变成一个点“ 。”,正如您在印刷品中看到的那样。
这是我的代码:
<?php
function hex2str($hex) {
$str = '';
for($i=0;$i<strlen($hex);$i+=2) $str .= chr(hexdec(substr($hex,$i,2)));
return $str;
} // i found this function on internet to convert HEX to String
$nome = "apateDNS.exe";//the name of the file
$arquivo = fopen($nome, "r");
$read = fread($arquivo,filesize($nome));
$hex = bin2hex($read);// return the hex of the binary
$hehe = chunk_split(strtoupper($hex), 2, " ");// split the hex each 2 bytes
$haha = str_split($hehe, 48); //split the hex each 48 characters (32 bytes + 16 blank spaces)
foreach($haha as $linha => $i){
echo "0000000".dechex($linha*16);
echo " ".$i." ".hex2str($i)."<br>";
}
?>
已解决: 我忘了删除函数中的空格...
$hex = str_replace(" ", "", $hex);
function hex2str($hex) {
$str = '';
for($i=0;$i<strlen($hex);$i+=2) {
$decValue = hexdec(substr($hex,$i,2));
if($decValue < 32) {
$str .= '.';
} else {
$str .= chr($decValue);
}
}
return $str;
}
要生成所有十六进制代码的 table 及其翻译,请使用此代码:
for($x = 0; $x < 16; $x++) {
$bin = $txt = array();
for($y = 0; $y < 16; $y++) {
$num = dechex($x * 16 + $y);
if(strlen($num) == 1) $num = '0' . $num;
$bin[] = $num;
$txt[] = hex2str($num);
}
echo (implode(' ',$bin) . ' ' . implode(' ',$txt)) . '<br/>';
}