5

gcc 4.6.0

バイナリデータはどのように見えますか?それはすべて1と0ですか。

文字列とバイナリデータのコピーについて別のプログラマーと話していたので、私はただ疑問に思っていました。

通常、私はstrcpy / strncpy関数を使用して文字列をコピーし、memcpy/memmoveを使用してバイナリデータをコピーします。しかし、私はそれがどのように見えるのか疑問に思っていますか?

提案をありがとう、

4

5 に答える 5

17

表示に使用しているものによって異なります。ここでは、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

ここに画像の説明を入力してください

于 2011-06-11T05:10:34.700 に答える
9

バイナリデータは、テキストではないデータであると言う方法にすぎません。言い換えれば、実際にはデータが何であるかについて多くの洞察を与えるのではなく、データが何でないかについての洞察を与えるのです。

奇妙なことに、最も技術的な意味では、テキストもバイナリデータです。

于 2011-06-11T05:45:12.030 に答える
6

このコンテキストでは、「バイナリデータ」は通常、nullバイト(たとえば'\0')を含む可能性のある単なるデータです。文字列操作は、とのようstrcpy()に機能strncpy()し、これらの文字を見ると停止しますが、バイト操作は、とのようmemcpy()に機能memmove()し、指定したバイト数の間常に継続します。

于 2011-06-11T05:10:37.957 に答える
4

バイナリデータはまさにそれであり、データはバイナリ形式でエンコードされています。バイナリファイルの内容をよりよく表示するには、Windows用のHiewEditorやLinux用のhexeditなどの16進エディタが必要です。

于 2011-06-11T05:11:39.350 に答える
0

それはすべて1と0です。ただし、1と0はコンピュータ上で異なって動作します。CPUは1と0をDRAMとは異なって認識し、これらは両方ともハードドライブで異なってエンコードされます。

于 2011-06-11T06:08:21.470 に答える