发布网友 发布时间:2022-04-06 01:07
共3个回答
懂视网 时间:2022-04-06 05:28
php字符串转为16进制的方法:首先创建一个PHP示例文件;然后通过String2Hex方法将字符串转为16进制;最后通过return返回转换结果即可。
推荐:《PHP视频教程》
php字符串和16进制编码的相互转换
php字符串是十进制的
/** **字符串转16进制 **/ public function String2Hex($string){ $hex=''; for ($i=0; $i < strlen($string); $i++){ $hex .= dechex(ord($string[$i])); } return $hex; } /** **16进制转字符串 **/ public function Hex2String($hex){ $string=''; for ($i=0; $i < strlen($hex)-1; $i+=2){ $string .= chr(hexdec($hex[$i].$hex[$i+1])); } return $string; } // example: $hex = String2Hex("test sentence..."); // $hex contains 746573742073656e74656e63652e2e2e echo Hex2String($hex); // outputs: test sentenc
我在做aes加密是发现一个问题,发现将字符串转16进制会出现转出数据位数对不上的问题可以修改为如下试试:
public function String2Hex($string){ $hex=''; // for ($i=0; $i < strlen($string); $i++){ // $hex .= dechex(ord($string[$i])); // } $hex = bin2hex($string); return $hex; }
热心网友 时间:2022-04-06 02:36
以 \u 开头,后跟4个十六进制数(即范围在 0-9 A-F的字符),是unicode编码格式的字符。
在PHP中,如果想要进行两者之间的转换,可以使用以下的函数:
<meta charset="UTF-8"/>
<?php
// 转换编码,将可以浏览的utf-8字符串转换成Unicode编码
function unicode_encode($uStr)
{
$uStr = iconv('UTF-8', 'UCS-2', $uStr);
$len = strlen($uStr);
$str = '';
//for ($i = 0; $i < $len – 1; $i = $i + 2){
for ($i = 0; $i < $len - 1; $i = $i + 2) {
$c = $uStr[$i];
$c2 = $uStr[$i + 1];
if (ord($c) > 0) { // 两个字节的文字
$str .= '\u' . base_convert(ord($c), 10, 16) . base_convert(ord($c2), 10, 16);
} else {
$str .= $c2;
}
}
return $str;
}
// 转换编码,将Unicode编码转换成可以浏览的utf-8字符串
function unicode_decode($uStr)
{
$pattern = '/([\w]+)|(\\\u([\w]{4}))/i';
preg_match_all($pattern, $uStr, $matches);
if (!empty($matches)) {
$uStr = '';
for ($j = 0; $j < count($matches[0]); $j++) {
$str = $matches[0][$j];
if (strpos($str, '\\u') === 0) {
$code = base_convert(substr($str, 2, 2), 16, 10);
$code2 = base_convert(substr($str, 4), 16, 10);
$c = chr($code) . chr($code2);
$c = iconv('UCS-2', 'UTF-8', $c);
$uStr .= $c;
} else {
$uStr .= $str;
}
}
}
return $uStr;
}
$uStr = '大家好';
echo '原始字符: ', $uStr , ' Undicode编码:', unicode_encode($uStr);
?>
热心网友 时间:2022-04-06 03:54
php 十六进制和字符串互相转换
function SingleDecToHex($dec)
{
$tmp="";
$dec=$dec%16;
if($dec<10)
return $tmp.$dec;
$arr=array("a","b","c","d","e","f");
return $tmp.$arr[$dec-10];
}
function SingleHexToDec($hex)
{
$v=ord($hex);
if(47<$v&&$v<58)
return $v-48;
if(96<$v&&$v<103)
return $v-87;
}
function SetToHexString($str)
{
if(!$str)return false;
$tmp="";
for($i=0;$i<strlen($str);$i++)
{
$ord=ord($str[$i]);
$tmp.=SingleDecToHex(($ord-$ord%16)/16);
$tmp.=SingleDecToHex($ord%16);
}
return $tmp;
}
function UnsetFromHexString($str)
{
if(!$str)return false;
$tmp="";
for($i=0;$i<strlen($str);$i+=2)
{
$tmp.=chr(SingleHexToDec(substr($str,$i,1))*16+SingleHexToDec(substr($str,$i+1,1)));
}
return $tmp;
}
echo SetToHexString("hello,大家好123");
echo "<hr>";
echo UnsetFromHexString(SetToHexString("hello,大家好123"));
参考资料:http://www.thinksaas.cn/group/topic/13578/