Цифры представлены в последовательности во всех текстовых кодировках? - PullRequest
1 голос
/ 23 апреля 2009

Этот вопрос не зависит от языка, но вдохновлен этими вопросами на языке c / c ++.

Как преобразовать один символ в int

Преобразование Char в int в C

Можно ли предположить, что символы для цифр (0123456789) появляются во всех текстовых кодировках?

т.е. Можно ли предположить, что

'9'-'8' = 1
'9'-'7' = 2
...
'9'-'0' = 9

во всех кодировках?

Я с нетерпением жду окончательного ответа на этот вопрос:)

Спасибо

Обновление: ОК, позвольте мне ограничить всеми кодировками , чтобы обозначать что-либо столь же старое, как ASCII и / или EBCDIC, а затем. Sandscrit Я не так беспокоюсь. , .

Ответы [ 5 ]

6 голосов
/ 23 апреля 2009

Я не знаю о всех кодировках, но по крайней мере в ASCII и EBCDIC все цифры 0-9 идут последовательно и в порядке возрастания номеров. Это означает, что все кодировки на основе ASCII и EBCDIC также должны иметь свои цифры по порядку. Так что почти все, с чем вы столкнетесь, за исключением азбуки Морзе или хуже , я скажу да.

3 голосов
/ 23 апреля 2009

И стандарт C ++, и стандарт C требуют, чтобы это было так, для текста программ на C ++ и C.

3 голосов
/ 23 апреля 2009

Тебе будет трудно доказать отрицание. Никто не может знать каждую текстовую кодировку, когда-либо изобретенную.

Все широко используемые сегодня кодировки (кроме EBCDIC, все еще широко используются?) Являются надмножествами ASCII. Я бы сказал, что вы, скорее всего, выиграете в лотерею, чем в практической среде, где строгий порядок от 0 до 9 не выполняется.

2 голосов
/ 23 апреля 2009

Все известные мне текстовые кодировки обычно последовательно упорядочивают каждое представление цифр. Однако ваш вопрос становится намного шире, когда вы включаете все другие представления цифр в другие кодировки, такие как японский: 1234567890. Обратите внимание, как символы для цифр отличаются? Ну, на самом деле это разные кодовые точки. Итак, я действительно думаю, что ответ на ваш вопрос труден, может быть, так как там очень много кодировок, и у них есть многократное представление цифр.

Лучший вопрос - спросить себя, зачем мне в первую очередь рассчитывать на цифры, чтобы быть в последовательных кодовых точках?

2 голосов
/ 23 апреля 2009

Согласно K & R ANSI C это так.

Выдержка:

... "Эта конкретная программа использует свойства символьного представления цифр. Например, проверка

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

определяет, является ли символ в c цифрой. Если это так, числовое значение этого цифра

c - '0'

Это работает, только если '0', '1', ..., '9' имеет последовательно увеличивающиеся значения. К счастью, это верно для всех наборов символов. ... "

...