为了账号安全,请及时绑定邮箱和手机立即绑定

PHP将字符串转换为十六进制,并将十六进制转换为字符串

PHP将字符串转换为十六进制,并将十六进制转换为字符串

PHP
手掌心 2019-11-14 15:17:42
我在PHP的这2种类型之间进行转换时遇到问题。这是我在谷歌搜索的代码function strToHex($string){    $hex='';    for ($i=0; $i < strlen($string); $i++){        $hex .= dechex(ord($string[$i]));    }    return $hex;}function hexToStr($hex){    $string='';    for ($i=0; $i < strlen($hex)-1; $i+=2){        $string .= chr(hexdec($hex[$i].$hex[$i+1]));    }    return $string;}我检查了一下,并在使用XOR加密时发现了这一点。我有字符串"this is the test",在与键进行XOR之后,结果在string中↕↑↔§P↔§P ♫§T↕§↕。之后,我尝试通过功能strToHex()将其转换为十六进制,并得到了这些12181d15501d15500e15541215712。然后,我使用功能hexToStr()进行了测试,然后得到了↕↑↔§P↔§P♫§T↕§q。那么,该怎么办才能解决这个问题呢?转换这2个样式值时为什么会出错?
查看完整描述

3 回答

?
子衿沉夜

TA贡献1828条经验 获得超3个赞

对于那些最终来到这里并且只是在寻找(二进制)字符串的十六进制表示的人。


bin2hex("that's all you need");

# 74686174277320616c6c20796f75206e656564


hex2bin('74686174277320616c6c20796f75206e656564');

# that's all you need


查看完整回答
反对 回复 2019-11-14
?
守候你守候我

TA贡献1802条经验 获得超10个赞

function hexToStr($hex){

    // Remove spaces if the hex string has spaces

    $hex = str_replace(' ', '', $hex);

    return hex2bin($hex);

}

// Test it 

$hex    = "53 44 43 30 30 32 30 30 30 31 37 33";

echo hexToStr($hex); // SDC002000173


/**

 * Test Hex To string with PHP UNIT

 * @param  string $value

 * @return 

 */

public function testHexToString()

{

    $string = 'SDC002000173';

    $hex    = "53 44 43 30 30 32 30 30 30 31 37 33";

    $result = hexToStr($hex);


    $this->assertEquals($result,$string);

}


查看完整回答
反对 回复 2019-11-14
  • 3 回答
  • 0 关注
  • 2725 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信