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