Php 二进制到字符串,每8位空格

Php 二进制到字符串,每8位空格,php,linux,shell,Php,Linux,Shell,如何使用PHP或Shell将此字符串转换为每8位有一个空格。由此: 0100010101110010011100100110111101110010 为此: 01000101 01110010 01110010 01101111 01110010 最快也是最清晰的解决方法很可能是: <?php $input = "0100010101110010011100100110111101110010"; $newString = chunk_split($input, 8, ' ');

如何使用PHP或Shell将此字符串转换为每8位有一个空格。由此:

0100010101110010011100100110111101110010
为此:

01000101 01110010 01110010 01101111 01110010

最快也是最清晰的解决方法很可能是:

<?php
 $input = "0100010101110010011100100110111101110010";

 $newString = chunk_split($input, 8, ' ');
 echo $newString;

?>

从bash尝试类似的方法:

echo "0100010101110010011100100110111101110010" | sed -E "s/([0-9]{8})/\1 /g"

扩展正则表达式的-E可能是Linux上的其他东西(GNU-sed)。

别忘了
awk

awk'{gsub(/.{8}/,“&”,$0);print}'

测试:
但是我需要在GNU-sed中使用它的
-r
(虽然
-E
似乎与Debian上的GNU-sed一起使用)。@Rocket:我经常在BSD(实际上是OS X)和Linux之间切换,所以有时候它是模糊的。@drrcknlsn-
{n}
在我学习时不是sed语言的一部分,我从来没有机会重新学习它。无论如何,您的选择是更好的,假设OP可以使用它。
{8}
如果您启用扩展正则表达式(
-r
在linux上,
-E
在BSD上)。这似乎有点过于复杂。它不像chunk_split()那样整洁和高效,但表明即使在PHP中,执行任何任务的方法也不止一种
#!/bin/sh
echo 0100010101110010011100100110111101110010 | sed 's/......../& /g'
echo "0100010101110010011100100110111101110010" | sed -E "s/([0-9]{8})/\1 /g"
[jaypal:~/Temp] echo "0100010101110010011100100110111101110010" | 
awk '{gsub(/.{8}/,"& ",$0); print}'
01000101 01110010 01110010 01101111 01110010 
$string = "0100010101110010011100100110111101110010";
$newString = trim(implode('',array_map(function($value) { return $value.' '; }, str_split($string,8))));