gcc 4.6.0
バイナリデータはどのように見えますか?それはすべて1と0ですか。
文字列とバイナリデータのコピーについて別のプログラマーと話していたので、私はただ疑問に思っていました。
通常、私はstrcpy / strncpy関数を使用して文字列をコピーし、memcpy/memmoveを使用してバイナリデータをコピーします。しかし、私はそれがどのように見えるのか疑問に思っていますか?
提案をありがとう、
gcc 4.6.0
バイナリデータはどのように見えますか?それはすべて1と0ですか。
文字列とバイナリデータのコピーについて別のプログラマーと話していたので、私はただ疑問に思っていました。
通常、私はstrcpy / strncpy関数を使用して文字列をコピーし、memcpy/memmoveを使用してバイナリデータをコピーします。しかし、私はそれがどのように見えるのか疑問に思っていますか?
提案をありがとう、
表示に使用しているものによって異なります。ここでは、16進数とASCIIです。
jcomeau@intrepid:~$ xxd /bin/bash | head -n 10
0000000: 7f45 4c46 0101 0100 0000 0000 0000 0000 .ELF............
0000010: 0200 0300 0100 0000 5021 0608 3400 0000 ........P!..4...
0000020: 345c 0c00 0000 0000 3400 2000 0800 2800 4\......4. ...(.
0000030: 1c00 1b00 0600 0000 3400 0000 3480 0408 ........4...4...
0000040: 3480 0408 0001 0000 0001 0000 0500 0000 4...............
0000050: 0400 0000 0300 0000 3401 0000 3481 0408 ........4...4...
0000060: 3481 0408 1300 0000 1300 0000 0400 0000 4...............
0000070: 0100 0000 0100 0000 0000 0000 0080 0408 ................
0000080: 0080 0408 c013 0c00 c013 0c00 0500 0000 ................
0000090: 0010 0000 0100 0000 c013 0c00 c0a3 1008 ................
これを表示する別の方法は次のとおりです。
jcomeau@intrepid:~$ convert -size 640x$(($(stat -c %s /bin/bash)/640)) \
-depth 8 gray:/bin/bash /tmp/bash.png
jcomeau@intrepid:~$ firefox /tmp/bash.png
バイナリデータは、テキストではないデータであると言う方法にすぎません。言い換えれば、実際にはデータが何であるかについて多くの洞察を与えるのではなく、データが何でないかについての洞察を与えるのです。
奇妙なことに、最も技術的な意味では、テキストもバイナリデータです。
このコンテキストでは、「バイナリデータ」は通常、nullバイト(たとえば'\0'
)を含む可能性のある単なるデータです。文字列操作は、とのようstrcpy()
に機能strncpy()
し、これらの文字を見ると停止しますが、バイト操作は、とのようmemcpy()
に機能memmove()
し、指定したバイト数の間常に継続します。
バイナリデータはまさにそれであり、データはバイナリ形式でエンコードされています。バイナリファイルの内容をよりよく表示するには、Windows用のHiewEditorやLinux用のhexeditなどの16進エディタが必要です。
それはすべて1と0です。ただし、1と0はコンピュータ上で異なって動作します。CPUは1と0をDRAMとは異なって認識し、これらは両方ともハードドライブで異なってエンコードされます。