【发布时间】:2011-04-03 22:46:05
【问题描述】:
我在 Behrouza Forouzan 撰写的《数据和通信网络》一书中找到了一个示例,其中涉及大小写字母在 7 位代码中仅相差一位。
例如,字符
A为1000001(0x41),字符a为1100001(0x61)。区别在于第6位,大写字母为0,小写字母为1。如果我们知道一种情况的代码,我们可以通过十进制加或减 32 轻松找到另一种情况的代码,或者我们只需翻转第六位。
这一切意味着什么?
我发现自己对所有这些事情感到非常困惑。有人可以提供这些事情如何真正发挥作用的例子吗?
【问题讨论】:
-
如果您不理解问题中的解释,您可能需要阅读有关二进制的内容:en.wikipedia.org/wiki/Binary_numeral_system。我不确定你能找到比“A”和“a”更好的例子。
-
我认为这是过去的一个有趣的怪癖。我不会梦想将位掩码应用于 char 进行不区分大小写的测试(使用 ToUpper() 或类似的)现在我们处于 unicode 时代,情况变得更糟 - 是 ß = ss :)
-
@Vibhakar:您的第二段是一个简单易懂的例子。如果你不理解它,你就错过了一些更基本的东西。你熟悉二进制数吗?位模式?
-
您不应该在实践中尝试使用此属性,因为这仅适用于 ASCII。可能这本书的作者忘了提到这不适用于 Unicode,或者小写/大写取决于“当前”语言。
-
Vibhakar Sinha,选择一个答案怎么样?
标签: ascii bit-manipulation case-sensitive