Rumah > pembangunan bahagian belakang > masalah PHP > php转换为二进制的实现方法

php转换为二进制的实现方法

藏色散人
Lepaskan: 2023-03-05 13:54:01
asal
4937 orang telah melayarinya

php转换为二进制的实现方法:首先创建一个PHP示例文件;然后定义一个StrToBin方法;接着通过unpack方法解析字符串;最后通过“base_convert”函数转换为二进制即可。

php转换为二进制的实现方法

推荐:《PHP视频教程

PHP 字符串 与 二进制相互转换

在网络上查找到了字符串与二进制相互转换的方法(相关问题描述和问题在下列代码中,请耐心查看,谢谢):

  

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

/**

* 将字符串转换成二进制

* @param type $str

* @return type

* php 中显示的字符串是多少进制的??

* 例如:$str = '你好'; // 这边的 '你好' 是什么进制数据(我知道他是字符串!)??

*/ 

function StrToBin($str){ 

    //1.列出每个字符

    // 这边的分割正则也不理解

    // (?<!^) 后瞻消极断言

    // (?!$) 前瞻消极断言

    // 看意思好像说的是:不以^开头(但是这边 ^ 又没有被转义...),不以 $ 结尾(同上)

    // 然后得到的记过就是字符串一个个被分割成了数组(郁闷)

    // 求解释

    $arr = preg_split(&#39;/(?<!^)(?!$)/u&#39;, $str); 

    //2.unpack字符 

    foreach($arr as &$v){

        /**

         * unpack:将二进制字符串解包(英语原文:Unpack data from binary string)

         * H: 英语描述原文:Hex string, high nibble first

         * 这段代码做了什么??

         */

        $temp = unpack(&#39;H*&#39;, $v); // 这边被解析出来的字符串为什么是 16进制的??

        $v = base_convert($temp[1], 16, 2); 

        unset($temp); 

    

   

    return join(&#39; &#39;,$arr); 

   

/**

* 讲二进制转换成字符串

* @param type $str

* @return type

*/ 

function BinToStr($str){ 

    $arr = explode(&#39; &#39;, $str); 

    foreach($arr as &$v){ 

        // 他做了什么??

        $v = pack("H".strlen(base_convert($v, 2, 16)), base_convert($v, 2, 16)); 

    

   

    return join(&#39;&#39;, $arr); 

   

echo StrToBin("php二次开发:www.php2.cc");; 

echo &#39;<br/>&#39;; 

echo BinToStr("1110000 1101000 1110000 111001001011101010001100 111001101010110010100001 111001011011110010000000 111001011000111110010001 111011111011110010011010 1110111 1110111 1110111 101110 1110000 1101000 1110000 110010 101110 1100011 1100011");

Salin selepas log masuk

上述的函数是怎样实现二进制和字符串的相互转换的??

-------分隔符-------

关于 pack 和 unpack 我已经清楚了!顺便分享下:

就用这边例子,说说我理解到的部分:

pack用法:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

// 二进制数字 => 二进制字符串

$bin_number = &#39;这边是二进制数字&#39;;

$hex = bin2hex($bin_number );

// 由于指定了 H(16进制,高位在前),所以第二个参数需要使 16 进制字字符串

// strlen($hex) 指定打包多少个 16 进制字符串

// 也可以使用 * 来自动识别

// 结果就是:二进制字符串了

$bin_str = pack(&#39;H&#39; . strlen($hex) , $hex);

<=>

$dec = bindec($bin_number);

$hex = dechex($dec);

$bin_str = hex2bin($hex);

unpack 用法:

//  转换作用:2进制字符串 => 16进制字符串

$str = unpack(&#39;H*&#39; , &#39;陈&#39;);

<=>

$str = bin2hex(&#39;陈&#39;);

Salin selepas log masuk

Atas ialah kandungan terperinci php转换为二进制的实现方法. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
php
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan