此函数用于将二进制数据转换为十六进制字符串表示形式。此函数不用于将表示二进制数字的字符串转换为十六进制。如果您需要此功能,您可以简单地执行以下操作
<?php
$binary = "11111001";
$hex = dechex(bindec($binary));
echo $hex;
?>
这将输出 "f9"。请记住,二进制数据和二进制的字符串表示之间存在很大区别。
(PHP 4, PHP 5, PHP 7, PHP 8)
bin2hex — 将二进制数据转换为十六进制表示形式
string
一个字符串。
返回给定字符串的十六进制表示形式。
示例 #1 bin2hex() 示例
<?php
$hex = bin2hex('Hello world!');
var_dump($hex);
var_dump(hex2bin($hex));
?>
上面的示例将输出
string(24) "48656c6c6f20776f726c6421" string(12) "Hello world!"
此函数用于将二进制数据转换为十六进制字符串表示形式。此函数不用于将表示二进制数字的字符串转换为十六进制。如果您需要此功能,您可以简单地执行以下操作
<?php
$binary = "11111001";
$hex = dechex(bindec($binary));
echo $hex;
?>
这将输出 "f9"。请记住,二进制数据和二进制的字符串表示之间存在很大区别。
一个用于创建包含二进制数据的字符串以保存(例如将 SQL 语句保存到文件)到文本文件或 PHP 代码中的好方法是执行以下操作
<?php
$field=bin2hex($field);
$field=chunk_split($field,2,"\\x");
$field= "\\x" . substr($field,0,-2);
?>
这将把您的字段(二进制或非二进制)转换为十六进制,然后将十六进制转换为可以放置在 PHP 文件中的字符串
FFFFFFFF -> \xFF\xFF\xFF\xFF
为了躲避垃圾邮件机器人,我看到人们(包括我自己)在 "mailto" 标签中对他们的电子邮件地址进行了十六进制编码。这是我编写的自动化此过程的小段代码
<?php
function hex_encode ($email_address) {
$encoded = bin2hex("$email_address");
$encoded = chunk_split($encoded, 2, '%');
$encoded = '%' . substr($encoded, 0, strlen($encoded) - 1);
return $encoded;
}
?>
例如
<a href="mailto:<?=hex_encode("[email protected]")?>">给我发邮件</a>
将生成以下地址
%70%65%64%72%61%6d%40%72%65%64%68%69%76%65%2e%63%6f%6d
-pedram
我只是浏览上面的内容,并做了一些修改,
想出了以下我认为更灵活的方法
<?php
function bin2hex($data) {
$corrected = ereg_replace("[^0-9a-fA-F]","",$data);
return pack("H".strlen($corrected),$corrected);
}
?>
这将确保无论您传递什么,即使是填充的
在极端或对之间,都应返回所需数据。
这是一个用于检查字符串是否包含任何 7 位 GSM 字符的函数。
这可能对在 SMS 平台上工作的人有用。
<?php
function check_gsm($str)
{
$arr = array(
"0x00", "0x01", "0x02", "0x03", "0x04", "0x05","0x06","0x07","0x08","0x09",
"0x0A","0x0B","0x0C","0x0D","0x0E","0x0F","0x10","0x11","0x12","0x13",
"0x14","0x15","0x16","0x17","0x18","0x19","0x1A","0x1B","0x1B0A",
"0x1B14","0x1B28","0x1B29","0x1B2F","0x1B3C","0x1B3D","0x1B3E",
"0x1B40","0x1B65","0x1C","0x1D","0x1E","0x1F","0x20","0x21","0x22",
"0x23","0x24","0x25","0x26","0x27","0x28","0x29","0x2A","0x2B","0x2C",
"0x2D","0x2E","0x2F","0x30","0x31","0x32","0x33","0x34","0x35","0x36",
"0x37","0x38","0x39","0x3A","0x3B","0x3C","0x3D","0x3E","0x3F","0x40",
"0x41","0x42","0x43","0x44","0x45","0x46","0x47","0x48","0x49","0x4A",
"0x4B","0x4C","0x4D","0x4E","0x4F","0x50","0x51","0x52","0x53","0x54",
"0x55","0x56","0x57","0x58","0x59","0x5A","0x5B","0x5C","0x5D","0x5E",
"0x5F","0x60","0x61","0x62","0x63","0x64","0x65","0x66","0x67","0x68",
"0x69","0x6A","0x6B","0x6C","0x6D","0x6E","0x6F","0x70","0x71","0x72",
"0x73","0x74","0x75","0x76","0x77","0x78","0x79","0x7A","0x7B","0x7C",
"0x7D","0x7E","0x7F");
$strl = strlen($str);
for ($i = 0;$i < $strl; $i++)
{
$char = '0x' . bin2hex(substr($str,$i,1));
$pos = in_array($char,$arr);
if ($pos == 1)
{
$j++;
}
}
if ($j < $strl)
{
return false;
}
else
{
return true;
}
}
?>
生成 API 密钥的便捷方式
<?php
$apikey = bin2hex(random_bytes(32)); // 生成 64 个字符长的字符串 /^[0-9a-f]{64}$/
?>