GCC 4.6.0
二进制数据是什么样的?都是1和0吗。
我只是想知道,因为我正在和另一个程序员谈论复制字符串和二进制数据。
通常,我使用 strcpy/strncpy 函数来复制字符串和 memcpy/memmove 来复制二进制数据。但是,我只是想知道它看起来像什么?
非常感谢您的任何建议,
GCC 4.6.0
二进制数据是什么样的?都是1和0吗。
我只是想知道,因为我正在和另一个程序员谈论复制字符串和二进制数据。
通常,我使用 strcpy/strncpy 函数来复制字符串和 memcpy/memmove 来复制二进制数据。但是,我只是想知道它看起来像什么?
非常感谢您的任何建议,
取决于您使用什么来查看它。这里是十六进制和 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
二进制数据只是一种说法,它是不是文本的数据。换句话说,它实际上并没有让您深入了解数据是什么,而是让您深入了解数据不是什么。
奇怪的是,从最专业的意义上来说,文本也是二进制数据。
在这种情况下,“二进制数据”通常只是可能包含空字节的数据(例如,'\0'
)。字符串操作函数喜欢strcpy()
并且strncpy()
会在看到这些字符时停止,而字节操作函数喜欢memcpy()
并且memmove()
将始终持续到您告诉它们的字节数。
二进制数据就是这样,以二进制形式编码的数据。为了更好地查看二进制文件的内容,您需要一个十六进制编辑器,例如 Windows 的 Hiew Editor 或 linux 的 hexedit。
都是一和零。但是 1 和 0 在您的计算机上的存在方式不同。CPU 看到 1 和 0 的方式与 DRAM 不同,并且两者在硬盘驱动器中的编码方式不同。