二进制到字符串,空间每8位数

时间:2012-01-26 19:46:13

标签: php linux shell

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

0100010101110010011100100110111101110010

对此:

01000101 01110010 01110010 01101111 01110010

6 个答案:

答案 0 :(得分:10)

解决这个问题的最快,也是最清晰的方法很可能如下:

<?php
 $input = "0100010101110010011100100110111101110010";

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

?>

答案 1 :(得分:5)

<?php
$str = "0100010101110010011100100110111101110010";
$str = implode(' ',str_split($str,8));    
echo $str; //output: 01000101 01110010 01110010 01101111 01110010

$str = str_replace(' ','',$str); 
echo $str; //output: 0100010101110010011100100110111101110010
?>

答案 2 :(得分:3)

#!/bin/sh
echo 0100010101110010011100100110111101110010 | sed 's/......../& /g'

答案 3 :(得分:3)

从bash尝试这样的事情:

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

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

答案 4 :(得分:3)

不要忘记awk

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

测试:

[jaypal:~/Temp] echo "0100010101110010011100100110111101110010" | 
awk '{gsub(/.{8}/,"& ",$0); print}'
01000101 01110010 01110010 01101111 01110010 

答案 5 :(得分:1)

$string = "0100010101110010011100100110111101110010";
$newString = trim(implode('',array_map(function($value) { return $value.' '; }, str_split($string,8))));