汉字怎样转换十六进制php

发布网友 发布时间: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

//汉字进制转换
//$string 传入的汉字或其它字符
//$tobase 要转换的进制 范围 2~36 之间任意取值
//$back 返回形式,0 转换成进制代码 ; 1 将进制转换成汉字

function ASCII($String,$tobase,$back){
if( $tobase > 1 && $tobase < 37 ){
if($back == 0){
return preg_replace('/(.)/es',"str_pad(base_convert(ord('\\1'),10,$tobase),8,'0',STR_PAD_LEFT)",$String);
}else{
return preg_replace('/(\w{8})/e',"chr(base_convert('\\1',$tobase,10))",$String);
}
}else{
return false;
}
}

//范例
$str = '我爱你';

$en = ASCII($str,2,0);// 转换成2进制: 111001101000100010010001111001111000100010110001111001001011110110100000
echo ASCII($en,2,1);// 转换成汉字:我爱你

$en = ASCII($str,8,0);// 转换成8进制: 000003460000021000000221000003470000021000000261000003440000027500000240
echo ASCII($en,8,1);// 转换成汉字:我爱你

$en = ASCII($str,10,0);// 转换成10进制: 0000023000000136000001450000023100000136000001770000022800000100000160
echo ASCII($en,10,1);// 转换成汉字:我爱你

$en = ASCII($str,10,0);// 转换成10进制: 0000023000000136000001450000023100000136000001770000022800000100000160
echo ASCII($en,10,1);// 转换成汉字:我爱你

$en = ASCII($str,16,0);// 转换成10进制: 000000e60000008800000091000000e700000088000000b1000000e4000000bd000000a0
echo ASCII($en,16,1);// 转换成汉字:我爱你

热心网友 时间:2022-04-06 03:54

你转换成十六进制的要干嘛啊?

没见过直接转十六进制的

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com