【问题标题】:How to use correctly the parity bit in ascii?如何正确使用 ascii 中的奇偶校验位?
【发布时间】:2022-11-01 11:43:32
【问题描述】:

这是我第一次来这个论坛,我想从这个问题开始 据我所知,在 C 中,char 数据类型是 8 位长,但是当您使用这种数据类型来传输 ascii 信息时,仍然是 8 位长,但 1 位是奇偶校验位,对吗?这是正确的吗,我的问题是,你能将一个ASCII字符发送到一个接收器,包括奇偶校验位吗?因为如果我的代码是: ...... 字符 x=0b01111000; ...... 它收到'x',但如果我的代码是: …… 字符 x=0b11111000; …… 它没有收到“x”,但奇偶校验位在 1,并且我的“x”数据中有 4 个“1”,所以我不知道何时使用奇偶校验位或我做错了什么 提前感谢您的回答!

.........................................

【问题讨论】:

  • ASCII 是一种字符编码,与位的存储或传输无关。需要明确的是,ASCII 中没有内置奇偶校验信息。这取决于通信协议,它可能包括也可能不包括任何数量的奇偶校验位、开始/停止位、数据位、ETC.
  • 所有 ASCII 码位都有 7 位。在默认的 C 语言环境中,在具有 8 位字节的机器上,它们通常以最高有效位零存储。最高有效位为 1 的代码页的一半是实现定义的,并且通常是某些特定于操作系统的代码页。 C 没有对校验和或奇偶校验的内置支持,也没有理由这样做。 char 是一种数据类型。它是一堆串在一起的碎片。如果你想要错误检查,那是你的事。

标签: c++ c char bit parity


【解决方案1】:

奇偶校验位通常对应用程序代码不可见,它们用于传输层并在后台不可见地处理。例如,RS-232,一个常见的串行标准,能够使用奇偶校验位,但它们永远不会出现在数据流本身中,它们只有在您检查实际电信号时才可见。

ASCII 是一个7-bit encoding standard,不包含任何奇偶校验位。

【讨论】:

    猜你喜欢
    • 2017-02-07
    • 2015-06-29
    • 2015-04-04
    • 2019-03-20
    • 1970-01-01
    • 2019-05-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多