You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

二进制中点(.)为何存在不同表示?技术问询

为什么汇编/目标文件里的点(.)二进制表示不一样?

嗨,这个问题问得很有意思!核心原因其实是你看到的那些"点"根本不是同一个东西——它们来自文件里不同类型的内容,二进制编码自然不一样,咱们拆开说:

两种"点"的本质区别

你贴的xxd -b输出里,出现的点分两类:

  • 真正的ASCII字符.:比如汇编代码里的.text、.file这些指令里的点,它的二进制是固定的00101110(对应十进制ASCII码46)。你看第一行输出里的00101110,就是这个真正的.字符的二进制,右侧列里对应的也是.。
  • xxd的占位符"点":第四行开头的..glob里的前一个点,其实是xxd用来替代不可打印ASCII字符的视觉符号。这些位置的二进制并不是.的编码,而是像换行符(00001010)、制表符(00001001)这类无法在终端显示的字符,xxd为了让输出整洁,就把它们统一显示成.,但它们的二进制和真正的.完全不同。

对应到你的输出片段验证

拿你给的例子看:

  • 第一行00000006里的00101110 → 这是真正的.字符,右侧列显示.,匹配得上;
  • 第四行00000018的前两个二进制是00001001和00101110:
    • 00001001是制表符(ASCII码9),属于不可打印字符,所以xxd在右侧列显示成.;
    • 00101110才是真正的.字符,右侧列也显示.;
      这就导致你看到两个连续的.,但它们的二进制完全不同——一个是制表符的编码,一个是.本身的编码。

一句话总结

你看到的"不同二进制的点",一个是真的.字符,一个是xxd用来代替不可打印字符的伪装.,本质不是同一个东西,所以二进制自然不一样~

内容的提问来源于stack exchange,提问作者Abdelrahman Emam

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.09 20:02:50