是否在所有文本编码中按顺序表示数字?

时间:2009-04-23 15:53:52

标签: language-agnostic unicode text encoding ascii

这个问题与语言无关,但受到这些c / c ++问题的启发。

How to convert a single char into an int

Char to int conversion in C

是否可以安全地假设数字(0123456789)的字符在所有文本编码中都是有争议的?

即。假设

是安全的
'9'-'8' = 1
'9'-'7' = 2
...
'9'-'0' = 9

所有编码?

我期待着对这一个的确切答案:)

谢谢,

更新好的,让我限制所有编码以表示与ASCII和/或EBCDIC一样古老的内容。 Sandscrit我并不那么担心。 。

5 个答案:

答案 0 :(得分:6)

我不知道所有编码,但至少用ASCII和< shudder> EBCDIC,数字0-9都连续出现,并且数字顺序递增。这意味着所有基于ASCII和EBCDIC的编码也应该按顺序排列。因此,对于你将遇到的几乎任何事情,除了莫尔斯代码或worse,我都会说是。

答案 1 :(得分:3)

你会发现很难证明是消极的。没有人能够知道所发明的每一个文本编码。

今天常用的所有编码(除了EBCDIC,它仍然是常用吗?)是ASCII的超集。我会说你更有可能赢得彩票而不是找到一个实际的环境,其中'0'到'9'的严格排序不成立。

答案 2 :(得分:3)

对于C ++和C程序文本,C ++标准和C标准都要求这样做。

答案 3 :(得分:2)

根据K& R ANSI C,它是。

摘录:

  

...“这个特殊的程序依赖于数字的字符表示的属性。例如,测试

     

if (c >= '0' && c <= '9') ...

     

确定c中的字符是否为数字。如果是,则为该数值   数字是

     

c - '0'

     

仅当'0', '1', ..., '9'具有连续增加的值时才有效。 幸运的是,所有字符集都是如此。 ...“

答案 4 :(得分:2)

我所知道的所有文本编码通常按顺序排列数字的每个表示。但是,当您在其他编码中包含所有其他数字表示时,您的问题会变得更加广泛,例如日语:1234567890。请注意数字的字符是如何不同的?嗯,它们实际上是不同的代码点。所以,我真的认为你的问题的答案很难,因为那里有很多编码,他们有多个数字表示。

更好的问题是问问自己,为什么我首先需要指望数字在顺序代码点?