Php 查看二进制值

Php 查看二进制值,php,Php,我把二进制文件存储在字符串中 $str = "100001111111110000101010100010000001"; 我从转换数字数组中得到的 $arrAsc = Array ( [0] => 33 [1] => 63 [2] => 48 [3] => 42 [4] => 34 [5] => 1 ) $arrBinary = array_map(create_function('$a', 'return

我把二进制文件存储在字符串中

$str = "100001111111110000101010100010000001";
我从转换数字数组中得到的

$arrAsc = Array
(
    [0] => 33
    [1] => 63
    [2] => 48
    [3] => 42
    [4] => 34
    [5] => 1
)
$arrBinary = array_map(create_function('$a', 'return decbin($a);'), $arrAsc);
将值分解为6位块后,我得到

Array
(
    [0] => 100001
    [1] => 111111
    [2] => 110000
    [3] => 101010
    [4] => 100010
    [5] => 1
)
我的问题是如何先显示零,即使有5,6,7。。。。位块

Array
(
    [0] => 100001
    [1] => 111111
    [2] => 110000
    [3] => 101010
    [4] => 100010
    [5] => 000001
)
可以使用和向每个字符串添加前导零。如果您只需要最后6位(在可能有7位或更多位的情况下),您可能还需要使用:

您可以使用和向每个字符串添加前导零。如果您只需要最后6位(在可能有7位或更多位的情况下),您可能还需要使用:


您真正要求做的是使用前导零

使用类似于:

$paddedString = str_pad($oldString, 6, '0', STR_PAD_LEFT);

这显然适用于数组_map(),您已经知道如何使用它。

您真正需要做的是使用前导零

使用类似于:

$paddedString = str_pad($oldString, 6, '0', STR_PAD_LEFT);

这显然适合在数组_map()中使用,您已经知道如何使用它。

您可以使用printf格式化字符串:

<?php

$str = "1111111000011010101001000000011";
$words = array();

foreach (str_split($str, 6) as $word) {
    $words[] = sprintf("%06s", $word);
}

print_r($words);

您可以使用printf格式化字符串:

<?php

$str = "1111111000011010101001000000011";
$words = array();

foreach (str_split($str, 6) as $word) {
    $words[] = sprintf("%06s", $word);
}

print_r($words);

这应该能奏效

if (strlen($a) < 6) {
    $i = (6-strlen($a));
    $add = '';
    for ($x = 0; $x <= $i; $i++) {
        $add .= '0';
    }
    $a = $add.$a;
}
if(strlen($a)<6){
$i=(6-strlen($a));
$add='';

对于($x=0;$x来说,这应该可以做到

if (strlen($a) < 6) {
    $i = (6-strlen($a));
    $add = '';
    for ($x = 0; $x <= $i; $i++) {
        $add .= '0';
    }
    $a = $add.$a;
}
if(strlen($a)<6){
$i=(6-strlen($a));
$add='';
对于($x=0;$x展开Frxstrem的(第一个)答案,可以一次性完成,无需使用
array\u map
先转换数字,然后再填充数字:

$arrAsc = array(33, 63, 48, 42, 34, 1);

$array_binary = array_map(function($dec) {
    return str_pad(decbin($dec), 6, '0', STR_PAD_LEFT);
}, $arrAsc);

Array
(
  [0] => 100001
  [1] => 111111
  [2] => 110000
  [3] => 101010
  [4] => 100010
  [5] => 000001
)
要扩展Frxstrem的(第一个)答案,可以一次性完成,无需使用
array_map
首先转换数字,然后再次填充数字:

$arrAsc = array(33, 63, 48, 42, 34, 1);

$array_binary = array_map(function($dec) {
    return str_pad(decbin($dec), 6, '0', STR_PAD_LEFT);
}, $arrAsc);

Array
(
  [0] => 100001
  [1] => 111111
  [2] => 110000
  [3] => 101010
  [4] => 100010
  [5] => 000001
)

我只是好奇,你为什么要这样做?@Jeff Pigarelli我为php考试做准备。尝试构建base64_decode()以更好地理解phpI我只是好奇,你为什么要这样做?@Jeff Pigarelli我为php考试做准备。尝试构建base64_decode()以更好地理解php