2012-01-22 19 views
-1

私はechoを使ってそれをシェルで印刷するとすべてが素晴らしいです。ファイルにバイナリ文字列を書き込む

人間が読める文字列をファイルに書きたいと思います。

私はこれらのメッセージをファイルに書き込もうとします。私はバイナリ文字列を参照します。

このような

6^@8^@3^@7^@8^@1^@0^@,^@,^@1^@1^@b^@c^@d^@9^@0^@f^@-^@e^@3^@3^@a^@-^@4^@e^@0^@5^@-^@9^@e^@3^@d^@-^@5^@f^@a^@1^@8^@3^@4^@f^@d^@5^@e^@7^@,^@,^@:^@:^@1^@,^@M^@o^@z^@i^@l^@l^@a^@/^@5^@.^@0^@ ^@(^@W^@i^@n^@d^@o^@w^@s^@ ^@N^@T^@ ^@6^@.^@1^@;^@ 
^@W^@O^@W^@6^@4^@;^@ ^@r^@v^@:^@9^@.^@0^@.^@1^@)^@ ^@G^@e^@c^@k^@o^@/^@2^@0^@1^@0^@0^@1^@0^@1^@ ^@F^@i^@r^@e^@f^@o^@x^@/^@9^@.^@0^@.^@1^@,^@F^@i^@r^@e^@f^@o^@x^@,^@9^@.^@0^@,^@W^@i^@n^@d^@o^@w^@s^@,^@,^@0^@,^@0^@,^@0^@,^@0^@,^@0^@,^@,^@ 
^@:^@:^@1^@,^@ ^@1^@/^@2^@1^@/^@2^@0^@1^@2^@ ^@5^@:^@4^@5^@:^@5^@0^@ ^@P^@M^@ 

しかし、私はこの期待:

6837817,,01497aed-181b-4054-b68f-3b41b4e707fc,,::1,Mozilla/5.0 (Windows NT 6.1; WOW64; rv:9.0.1) Gecko/20100101 Firefox/9.0.1,Firefox,9.0,Windows,,0,0,0,0,0,, ::1, 1/21/2012 5:45:51 PM 

は、[OK]を私はバイナリ文字列から文字列を取得するためにpackunpackのような方法があることを見たが、私は失敗しました。

<?php 

$context = new ZMQContext(); 
$receiver = new ZMQSocket($context, ZMQ::SOCKET_PULL); 
$receiver->bind("tcp://*:5557"); 

$fp = fopen('data.txt', 'w'); 

while(true){ 
$str = $receiver->recv(); 

echo $str."\n"; 

file_put_contents('foo.txt', $str); 

//fwrite($fp, $str."\n"); 


} 
fclose($fp); 
?> 

どうすればいいですか?私はまた:(

を、文字列をファイルに書きたかった、これは高価な操作です?

+0

なぜあなたは(未)パッキングですか?その文字列は何ですか?ファイルに書き込むだけで何が問題になりますか? – deceze

+0

私はごみを見る。私はファイルに書き込むときバイナリを意味する。私はエコーで印刷すると、文字列表現を取得しますが、ファイルには表示されません。 – DarthVader

+0

@deceze編集を参照してください。 – DarthVader

答えて

1

あなたは、バイナリデータがありません持っている何か、

$string = iconv("UCS-2LE", "UTF-8", $string); 
file_put_contents(...); 

を参照してください。あなたは、「デコード」それをすることができますのでしかし、テキストの異なるエンコーディングはそれは私が言うと思いますUCS-2のいくつかのフォームですおよびUCS-2,BOMFF FE

+0

cool。おかげさま...... – DarthVader

関連する問題