php 0 .jpg十六进制,PHP二进制到十六进制,前导零

我有以下代码:

$binary = "110000000000";

$hex = dechex(bindec($binary));

echo $hex;

?>

哪个工作正常,我得到的值为c00.

但是,当我尝试转换000000010000时,将获得值“ 10”.我真正想要的是所有前导零,因此最终结果为“ 010”.

我该怎么做呢?

编辑:我应该指出,二进制数的长度可以变化.因此$binary可能是00001000,结果为08.

解决方法:

您可以在必要数量的前导零之前加上以下内容:

$hex = str_repeat("0", floor(strspn($binary, "0") / 4)).$hex;

这是做什么的?

>使用strspn找出您的二进制字符串有多少个前导零.

>它将转换为您在十六进制表示形式上所需的前导零的数量.整个4个前导零位的组需要转换为一个零十六进制数字;任何剩余的零位已经被编码在输出的第一个非零十六进制数字中,因此我们使用floor来将它们淘汰.

>它使用str_repeat在结果前添加了许多零.

请注意,如果输入位数不是4的倍数,则这可能导致零十六进制数字比预期的少一.如果有可能,您将需要进行相应的调整.

标签:php,binary,hex

来源: https://codeday.me/bug/20191011/1890341.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值