我正在写一些技术文档,并描述 I2c 7 位寻址模式的格式。这也与 ASCII 7 位编码有关,但这只是旁注。
I2c 使用 7 位(或 10 位,此处未讨论)来寻址从设备。7 位地址后面是另一个位,用于指示从设备读取或写入。
发送地址时会传输 8 位,但实际上是 7 位加上方向位 (R/w#)。
我的问题:如果使用 0x 来描述基数为 16、十六进制、八位字节,那么用什么来描述基数为 15(呃五进制?)的七位字节?也许这个词字节这里也是不正确的。
我知道 0x 也用于描述 16 位字,但从逻辑上讲,它们实际上是两个 8 位字节在一起,所以 0x 感觉没问题。
注:我是从这里。
标记。
答案1
您说得不太对。我们用0x
来表示以十六进制(基数为 16)表示的数字。在任意长度的数字前使用它都是完全没问题的0x
,只要您以 16 为基数来表示它们即可。
如果您看到“0x1”,则就像看到 1 一样。它可能是一个 1 位。它可能是一个字节。它可能为任意长度。“0x”并不表示特定长度。
答案2
Base15 并不意味着 7 位字节。这两个概念毫无关系……
7 位字节就是这样的。最高有效位未被使用的字节。
使用带有 0x 前缀的十六进制表示法来显示存储在这种 7 位字节中的值没有任何问题,只要您明确表示只有 7 位有效即可。(换句话说:0x0* 到 0x7*,0x8* 及更高的数字未被使用。)
据我所知,对此没有任何特殊符号。
我已经编程 30 多年了,过去这些 7 位系统比现在更常见。如果有特殊符号,我肯定会在某个时候遇到它,但我从未遇到过。