Gra*_*ble 10
二进制字符串是在PHP 5.2.1中引入的,但预计仅从PHP 6开始生效.它试图区分Unicode和二进制字符串.前者是新的字符串格式,后者是当前格式,但改为"b"符号.
您可能知道,PHP 6已被放弃,字符串格式没有改变."b"符号只是那个时代的遗物.
'foobar' === b'foobar'; // true
Run Code Online (Sandbox Code Playgroud)
所以现在(PHP 5和7),二进制字符串是唯一的字符串格式.字符编码(可以是多字节)由文本编辑器,Web浏览器等在"上层"进行管理.您可以将二进制字符串视为由完整的0-255字节值范围组成的字符串.
具有非打印字符等的字符串可以在PHP中像任何其他字符串一样进行操作,但是您将获得显示它的垃圾.还有一些字符具有特殊含义:\0在C和SQL中标记字符串终止,有控制字符等.因此,只要在PHP之外使用它们,您就可能遇到麻烦.
例如,random_bytes()生成这样的字符串.
jit*_*ter -9
$number = decbin(59);
echo $number . "\n"; //111011
$number = bindec($number);
echo $number . "\n"; //59
Run Code Online (Sandbox Code Playgroud)
decbin(int $number):返回包含给定数字参数的二进制表示形式的字符串。
bindec(string $bstring):返回 bstring 参数中二进制数的十进制等效值。