что такое двоичные данные? - PullRequest
4 голосов
/ 11 июня 2011

gcc 4.6.0

Как выглядят двоичные данные?Это все 1 и 0.

Мне просто интересно, когда я разговаривал с другим программистом о копировании строк и двоичных данных.

Обычно я использую функции strcpy / strncpy для копирования строк иmemcpy / memmove для копирования двоичных данных.Тем не менее, мне просто интересно, как это выглядит?

Большое спасибо за любые предложения,

Ответы [ 5 ]

17 голосов
/ 11 июня 2011

зависит от того, что вы используете для просмотра.здесь это в шестнадцатеричном и 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

enter image description here

8 голосов
/ 11 июня 2011

Двоичные данные - это просто способ сказать, что это не текстовые данные. Другими словами, это на самом деле не дает вам глубокого понимания того, что данные являются , скорее, это дает вам понимание того, что данные не .

Странный бит в том, что в самом техническом смысле слова текст также является двоичными данными.

6 голосов
/ 11 июня 2011

В этом контексте «двоичные данные» обычно представляют собой данные, которые могут содержать нулевые байты (например, '\0').Функции манипуляции со строками, такие как strcpy() и strncpy(), остановятся, когда увидят эти символы, тогда как функции манипулирования байтами, такие как memcpy() и memmove(), всегда будут продолжаться для количества байтов, которые вы им сообщаете.

3 голосов
/ 11 июня 2011

Двоичные данные - это просто данные, закодированные в двоичной форме.Чтобы лучше увидеть, как выглядит содержимое бинарного файла, вам потребуется шестнадцатеричный редактор, такой как Hiew Editor для Windows или hexedit для linux.

0 голосов
/ 11 июня 2011

Это все единицы и нули.Но единицы и нули живут по-другому на вашем компьютере.Процессор видит единицы и нули иначе, чем DRAM, и оба они по-разному кодируются на жестком диске.

...