什么是二进制数据?

时间:2011-06-11 05:07:53

标签: c binary-data data-representation

gcc 4.6.0

二进制数据是什么样的?是1还是0。

我只是想知道,因为我正在与另一位程序员讨论复制字符串和二进制数据。

通常,我使用strcpy / strncpy函数复制字符串,使用memcpy / memmove复制二进制数据。但是,我只是想知道它是什么样的?

非常感谢任何建议,

5 个答案:

答案 0 :(得分: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

enter image description here

答案 1 :(得分:8)

二进制数据只是说它不是文本的数据。换句话说,它实际上并没有让您对数据 的内容有很多了解,而是让您深入了解不是的数据。

奇怪的是,从技术意义上说,文字也是二进制数据。

答案 2 :(得分:6)

在此上下文中,“二进制数据”通常只是可以包含空字节的数据(例如,'\0')。像strcpy()strncpy()这样的字符串操作函数会在看到这些字符时停止,而像memcpy()memmove()这样的字节操作函数将始终以你告诉它们的字节数为单位继续运行到。

答案 3 :(得分:3)

二进制数据就是这样,数据以二进制形式编码。为了更好地查看二进制文件的内容,您需要一个十六进制编辑器,如Windows的Hiew Editor或Linux的hexedit。

答案 4 :(得分:0)

全是零和零。但是在您的计算机上,零和零的生活方式不同。 CPU看到1和0与DRAM不同,并且这两者在硬盘驱动器中的编码方式不同。