Php 二进制到字符串,每8位空格
如何使用PHP或Shell将此字符串转换为每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, ' ');
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))));