echo Utf8ToHex("5g");
function Utf8ToHex($str){
$str = rawurlencode($str);
$arr = explode('%',$str);
$Hex = implode('',$arr);
return $Hex;
}
我这个函数如果是汉字的情况它就是正确,如果是数字+英文,他就不行了。
比如输入5g
得到 16 进制是35 67
;
输入123456
得到 16 进制是31 32 33 34 35 36
;
网上找了几个 php 语言方法都不太好使
1
lcdtyph 2021-10-29 18:31:14 +08:00 via iPhone
没看懂,英文字母和数字经过几乎所有编码之后不都是一样的吗
|
2
eason1874 2021-10-29 20:03:55 +08:00
网上例子很多啊,随手搜就有
function hex_chars($data) { $hex = ''; for ($i=0; $i<strlen($data); $i++) { $c = substr($data, $i, 1); //$hex .= '{'. hex_format(ord($c)). '}'; $hex .= hex_format(ord($c)); } return $hex; } function hex_format($o) { $h = strtoupper(dechex($o)); $len = strlen($h); if ($len % 2 == 1) $h = "0$h"; return $h; } echo hex_chars('5g') . "\n"; // 3567 echo hex_chars('你好') . "\n"; // E4BDA0E5A5BD 其实自己写也不难,徒手写考验知识,对着文档写就简单 |
3
lululau 2021-10-29 21:25:10 +08:00
echo 汉字 | od -An -tx1 | perl -alne 'print "@F"'
|
4
cs5117155 OP @eason1874 但是如果按照这个统一方法,输入 123456 ,就得不到`31 32 33 34 35 36`这样的结果了
|