【问题标题】:what is binary data?什么是二进制数据?
【发布时间】:2011-09-12 22:34:59
【问题描述】:

gcc 4.6.0

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

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

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

非常感谢您的任何建议,

【问题讨论】:

  • “看起来”是什么意思?电脑上所有的数据都是1和0,就看你想怎么表示了。

标签: c binary-data data-representation


【解决方案1】:

取决于您使用什么来查看它。这里是十六进制和 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

【讨论】:

  • 啊,我们生活在这样的时代,您可以将 640 宽的图像粘贴到网页中,而不必担心人们的屏幕是否可以处理它。甚至他们的浏览器窗口是否可以处理它。甚至浏览器窗口内页面布局内的窄内容保存列是否可以处理它;-)
  • 那幅画很美
【解决方案2】:

二进制数据只是一种表示它是非文本数据的方式。换句话说,它实际上并没有让您深入了解数据是什么,而是让您了解数据不是什么。

奇怪的是,在最专业的意义上,文本也是二进制数据。

【讨论】:

    【解决方案3】:

    在这种情况下,“二进制数据”通常只是可能包含空字节的数据(例如,'\0')。 strcpy()strncpy() 之类的字符串操作函数会在它们看到这些字符时停止,而像 memcpy()memmove() 之类的字节操作函数将始终按照您告诉它们的字节数继续运行。

    【讨论】:

    • 这是中肯的建议。然而,这似乎是一个愚蠢的问题。但是你怎么知道你正在复制的内容可能是二进制数据格式或字符串格式。我想如果你不知道,那么你就不知道你的程序。
    • @ant2009:完全正确。给你指针的人也应该告诉你它指向什么。
    【解决方案4】:

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

    【讨论】:

      【解决方案5】:

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

      【讨论】:

        猜你喜欢
        • 2019-07-24
        • 2012-03-30
        • 2015-08-26
        • 1970-01-01
        • 1970-01-01
        • 2017-04-18
        • 1970-01-01
        • 2023-03-27
        • 1970-01-01
        相关资源
        最近更新 更多