【问题标题】:How to properly convert HEX to BIN in PHP7?如何在 PHP7 中正确地将 HEX 转换为 BIN?
【发布时间】:2019-05-10 20:13:55
【问题描述】:

我正在尝试将 HEX 值“0000”转换为 BIN 值。 在数学中: (0000)16 = (0000 0000 0000 0000)2

但是当我尝试使用时

$hex = '0000';
echo base_convert ($hex, 16, 2);

我的 0000 0000 0000 0000 被插入 0 个。

它看起来一样但不是。 在我的场景中,16 位代表保存为 HEX 值的数字输出的状态。

我需要更改哪些内容才能使其按预期工作?

【问题讨论】:

    标签: php type-conversion hex bin


    【解决方案1】:

    您得到 0,因为base_convert 不会在结果字符串中输出比表示数字所需更多的数字。相反,使用hexdec 将字符串转换为十进制数,然后使用sprintf 使用%b 转换规范将输出作为16 位二进制数字:

    $hex = '0000';
    $bin = sprintf("%016b", hexdec($hex));
    echo $bin;
    

    输出:

    0000000000000000
    

    如果你真的想要每个 4 位块之间的空格,你可以使用 str_splitimplode 例如

    echo implode(' ', str_split($bin, 4)) . "\n";
    

    输出:

    0000 0000 0000 0000
    

    Demo on 3v4l.org

    【讨论】:

    • @Tikky 我已经改进了答案,删除了对base_convert 的调用并将其替换为更适合与sprintf 一起使用的hexdec
    • 比你再一次。适合我
    【解决方案2】:

    根据我的经验,PHP 和 Js 有同样的问题。我曾经检查并在需要的地方添加 n 0。

    【讨论】:

    • 这不是hex2bin 的用途。如果您创建了一个演示示例,例如3v4l.org/BqpBu 你会看到它不会产生 OP 想要的输出。
    • 感谢您的指正 :) 我没有仔细阅读问题。
    猜你喜欢
    • 2015-01-13
    • 1970-01-01
    • 2018-09-15
    • 2012-11-04
    • 1970-01-01
    • 2018-08-30
    • 2012-05-20
    • 2020-10-09
    • 2020-02-10
    相关资源
    最近更新 更多