Эта вики не поддерживает имена файлов с символами отсутствующими в таблице ascii
Когда я пытаюсь заархивировать файлы, содержащие в своих именах символы Юникода, такие как © или ™, я получаю следующую ошибку:
Встроенная архивация Windows 10 может не иметь этой проблемы, как сообщается в комментарии к этому вопросу.
2 ответа 2
Если оскорбительные символы написаны на языке, отличном от английского, но поддерживаемый Microsoft, вы можете установить соответствующий языковой пакет MUI (Многоязычный интерфейс пользователя) из Центра обновления Windows или соответствующий пакет LIP (Language Interface Pack) отсюда в качестве возможного исправления.
В дополнение к вышесказанному может потребоваться изменить языковой стандарт системы.
Введите "регион" в поле поиска меню "Пуск" (без кавычек)
Откройте апплет « Регион и язык».
Перейдите на вкладку « Администрирование », а затем в разделе "Язык" для программ, не поддерживающих Юникод, нажмите « Изменить языковой стандарт системы». Если вас попросят ввести пароль администратора или подтверждение, введите пароль или предоставьте подтверждение.
Выберите язык и нажмите кнопку ОК.
Если вам будет предложено перезагрузить компьютер, нажмите « Перезагрузить сейчас», чтобы сделать это.
В формате ZIP давно отсутствовала поддержка Unicde, и это расширение было добавлено только 6 лет назад в 2006 году. Согласно ПРИЛОЖЕНИЮ D - Языковая кодировка (EFS) спецификации формата файла ZIP:
Вы можете прочитать мрачные подробности об этом специфическом отсутствии поддержки Unicode в Windows в следующей серии постов Microsoft Майкла Каплана:
PS «Я только что узнал, что архивирование с помощью" send to "в Windows работает так же хорошо, как" лучшее "архивирование Winrar, но намного быстрее». - Я только что проверил это, несколько раз. Помимо дополнительного времени, которое требуется для открытия диалогового окна WinRAR « Добавить в архив », выберите ZIP в качестве формата архива и нажмите "ОК", фактическое время, затрачиваемое на сжатие, было примерно одинаковым для обоих, в целом WinRAR занимал меньше времени (хотя различия были незначительными ). Если вы заметили огромную разницу, это могло произойти, только если вы сначала протестировали WinRAR для набора файлов, а затем сразу же сжали те же файлы с помощью Compressed Folders. Естественно, что во второй раз Windows уже кэшировала данные, поэтому процесс занял часть времени, которое он занимал изначально. Сделайте это в обратном порядке с набором файлов, к которым вы ранее не обращались во время текущего сеанса Windows, и я уверен, что результат будет обратным. :)
Что касается окончательного сжатого размера, в зависимости от данных / комбинации форматов файлов в архиве, я обнаружил, что любой из двух справляется лучше (хотя опять-таки различия были незначительными). Конечно, форматы 7z или Rar (или даже WinZip ZipX) намного лучше в этом отношении и будут превосходить обычные ZIP почти каждый день (то есть ZIP использует традиционный / устаревший алгоритм дефляции вместо PPMd и тому подобное).
первая часть в порядке, но вторая часть вызывает проблему. Это может быть связано с тем, что “・” можно ввести с помощью косой черты, но я не уверен. Я пытался сбежать от персонажа, но это, похоже, не решает проблему. У вас есть какие-нибудь предположения, что может быть причиной этого?
2 ответа
У меня возникли проблемы с некоторыми строковыми символами, такими как 'c++' , когда я пытаюсь манипулировать тем, что получаю error: uncaught exception: Syntax error, unrecognized expression: + Есть ли какой-то способ объявить строки или что-то еще, что может быть полезно в этом случае? В этом.
Я ищу простую функцию Python, которая принимает строку и возвращает аналогичную, но со всеми символами, не являющимися ascii, преобразованными в их ближайший эквивалент ascii. Например, диакритические знаки и тому подобное следует отбросить. Я предполагаю, что должен быть довольно канонический.
ОБНОВЛЕНИЕ для U+30FB (СРЕДНЯЯ ТОЧКА КАТАКАНЫ):
Поскольку @ sergey-tachenov указывает, что проблема связана с U+30FB (СРЕДНЯЯ ТОЧКА КАТАКАНЫ), то ее необходимо решить. По этой причине я хотел бы поделиться некоторыми предыдущими проектами и предложениями.
Предложение-1:
Предложение-2:
Разные люди сталкиваются с одной и той же проблемой. Поэтому они пытались разными способами.
- замена его точкой(.) решила проблему.
- KATAKANA MIDDLE DOT (・) -это символ двойной ширины. Если вы хотите использовать среднюю точку Катаканы (японскую), рассмотрите возможность использования ПОЛУШИРИНЫ Вместо этого СРЕДНЯЯ ТОЧКА КАТАКАНЫ.
- переключился на обычную пулю, и она отлично работает.
Если вы видите twitter-text , они сделали решение для KATAKANA MIDDLE DOT (・) . См. в репо github
Ссылка на ресурс
Но разработчик attom Криссимпкинс заявил, что ниже
Я могу подтвердить, что у нас нет глифа средней точки Катаканы (U+30FB) в обычном шрифте Hack. Есть средняя точка (U+00B7), которая будет иметь вид, который вы ищете здесь. Я могу подтвердить, что Глиф U+00B7 имеет тот же фиксированный интервал ширины, что и rest обычного набора (и всех других наборов вариантов).
Во-первых, я хочу поделиться с вами тем, что точка или точка (.) - это символ ASCII . Так что точка (.) - это не проблема. Проблема может заключаться в кодировке символов и настройках сервера .
SMB URL будет выглядеть следующим образом:
JCIF также могут обращаться к серверам и рабочим группам.
Важно: для всех SMB URLs, представляющих рабочие группы, серверы, общие ресурсы или каталоги, требуется косая черта trailing '/'.
Компонент userinfo SMB URL (домен;user:pass) должен иметь кодировку URL, если он содержит зарезервированные символы. Согласно RFC 2396 эти символы не являются символами US-ASCII и большинством мета-символов , однако jCIFS будет корректно работать с чем угодно, кроме"@", который используется для разграничения компонента userinfo от сервера, и"%", который является самим escape-символом URL.
Проверка и настройка символов
Тогда вы должны знать, какую кодировку вы используете. Используя следующий код, вы можете получить:
или вы можете дать команду
$ testparm -v | grep dos shows that Samba's default OEM encoding
CIFS uses either UTF-16LE or a default codepage. The default codepage used by JCIFS is Cp850 or US_ASCII.
In jCIFS you can set it UTF-8 and check:
Then for japanese locale, you can try
share names, passwords, and in some cases file and directory names that contain non ASCII characters may not be handled properly. By default this property is Cp860 which is MS-DOS Latin1.
Note: The Cp860 charset converter is located in jre/lib/charsets.jar which AFAIK is only supported by the internationalized version of Sun's JRE. If Cp860 is not available an exception will occur. To avoid this exception you can set jcifs.encoding to ASCII but share names and passwords with non-ASCII characters will not be processed correctly. To determine if jCIFS is properly processing these characters create a share that contains non-ASCII characers (e.g. Grüße) and then try to list that share with the ListFiles.java example program.
Setting Client Properties with Japanese
For Japanese language, you could try setting jcifs.encoding = Shift_JIS
В следующих таблицах показаны наборы кодировок Japanese , поддерживаемые J2SE 5.0 . Канонические имена, используемые новым java.nio APIs, во многих случаях не совпадают с именами, используемыми в java.io и java.lang APIs.
Я поделился полным примером кода для JCIFS. Вы могли бы попробовать
Вот пример извлечения файла:
Вы также можете read/write, удалять, создавать каталоги, переименовывать, перечислять содержимое каталога, перечислять рабочие группы/домены ntd и серверы в сети, перечислять общие ресурсы сервера, открывать именованные каналы, проверять подлинность веб-клиентов и т. Д.
Классы SmbFile, SmbFileInputStream и SmbFileOutputStream аналогичны классам File, FileInputStream и FileOutputStream
При использовании FileInputStream и FileOutputStream код будет выглядеть следующим образом:
Предосторожность-1:
Однако в военных установках JIRA это может быть не так. Следовательно, убедитесь, что флаг useBodyEncodingForURI="true" включен в следующий элемент файла conf/server.xml вашей установки Apache Tomcat под управлением JIRA:
После указания useBodyEncodingForURI="true" во всех определениях соединителя (i.e. both the HTTP and the HTTPS connectors) , как описано в разделе "Изменение Tomcat server.xml" документации по установке JIRA на Tomcat 6.0 или 7.0
Ссылка на ресурс:
Для символов, отличных от ASCII, вы можете пройти через
У меня есть файл excel с многочисленными символами, не являющимися ASCII, которые я хотел бы заменить символом пробела. Этот текст должен быть введен в базу данных MySQL, и он не будет импортироваться с этими символами в строках. Я получаю HY000 Incorrect string value при попытке опубликовать.
У меня возникла проблема с символами, не являющимися ASCII в предложении where Скажем, например, запись в моей таблице имеет : column_a Bom D Street Street И я хочу посмотреть, найдет ли это запись: SELECT * FROM [tbl_test] where column_a = 'Bom D� Street' Это всегда не возвращает никаких записей.
Взгляните на комментарий heenenee, прогуляйтесь по файловой системе вашего сервера, чтобы проверить, каково реальное имя общего ресурса. Я тестировал доступ к сетевым ресурсам со средней точкой и японскими именами на сервере Samba (UTF-8) с источником Java (UTF-8) без проблем.
Похожие вопросы:
Существует множество регулярных выражений, которые можно использовать для проверки адреса email, но большинство из них несовместимы с символами, отличающимися от ASCII. Как только адрес email.
У меня возникли некоторые проблемы с кодировкой некоторых символов unicode. Это код, который я использую: test = raw_input(Test: ) print test.encode(utf-8) Когда я использую теперь обычные символы.
У меня возникли проблемы с некоторыми строковыми символами, такими как 'c++' , когда я пытаюсь манипулировать тем, что получаю error: uncaught exception: Syntax error, unrecognized expression: +.
Я ищу простую функцию Python, которая принимает строку и возвращает аналогичную, но со всеми символами, не являющимися ascii, преобразованными в их ближайший эквивалент ascii. Например.
У меня есть файл excel с многочисленными символами, не являющимися ASCII, которые я хотел бы заменить символом пробела. Этот текст должен быть введен в базу данных MySQL, и он не будет.
У меня возникла проблема с символами, не являющимися ASCII в предложении where Скажем, например, запись в моей таблице имеет : column_a Bom D Street Street И я хочу посмотреть, найдет ли это запись.
getJSON проблемы с некоторыми символами в url Когда я попробую это сделать: var lics='<?php.
я хочу знать, что делать, чтобы решить эту проблему с расширенными символами ascii, я не понимаю, зачем печатать странные символы вместо буквы, которые представляют собой 0x90 я ставлю PutStr c381.
возникает ошибка, т.е. окошко в котором Microsoft Office Access сообщает: нам не удалось найти файл . Возможно он был перемещен, переименован или удалён?
Пробовал смотреть название файла через MsgBox эти символы отображаются вопросительными знаками, как и при просмотре в области отладки (Immediate).
vmag |
---|
проще решить проблему в самом поставщике файлов, чтобы не сейчас. а всегда приходили файлы с именами в латинице и без спец символов |
Панург |
---|
bosse-sl, можно использовать имена файлов в формате «8.3» |
tunknown |
---|
. Некоторые администраторы отключают. |
MrShin |
---|
Ни Msgbox, ни Immediate не имеют полной поддержки unicode. . Также VBA редактор также не имеет полной поддержки Unicode, поэтому не рекомендуется там писать что-либо символами отличными от ASCII, на не русском офисе это не будет работать с большой вероятностью. |
Кривцов Анатолий |
---|
Да, для таких названий Dir не подходит, т.к. преобразует кодировку в Ansi. |
Кривцов Анатолий |
---|
А вот FSO, который вы используете мимоходом - вполне справляется. |
Кривцов Анатолий |
---|
А если в реалии строк гораздо больше, чем в примерах . |
С батником могу помочь, там всё очень просто.
Логика в том, что вы, судя по вашему описанию, не обрабатываете сразу несколько файлов, а по одному. То есть - файл пришёл, упал в определённую папочку. Есть хитрая команда Rename (Ren) (я ошибся с ремув). Она позволяет любое (. ) название файла переименовать в любое новое название файла.
Rename (ren)
Изменяет имя файла или набора файлов.
Синтаксис
rename [диск:][путь] имя_файла_1 имя_файла_2
ren [диск:][путь] имя_файла_1 имя_файла_2
в вашем случае это будет выглядеть так.
Создаёте каталог, куда падает исходный файл в формате xls и где вы его будете переименовывать. Например, C:\Транзит
Создаёте текстовый файл, переобзываете его, например, в ИмяФайла.bat
В нём пишете строку
ren C:\Транзит *.xls НовИмя.xls
Когда я пытаюсь заархивировать файлы, содержащие в своих именах символы Юникода, такие как © или ™, я получаю следующую ошибку:
Встроенная архивация Windows 10 может не иметь этой проблемы, как сообщается в комментарии к этому вопросу.
2 ответа 2
Если оскорбительные символы написаны на языке, отличном от английского, но поддерживаемый Microsoft, вы можете установить соответствующий языковой пакет MUI (Многоязычный интерфейс пользователя) из Центра обновления Windows или соответствующий пакет LIP (Language Interface Pack) отсюда в качестве возможного исправления.
В дополнение к вышесказанному может потребоваться изменить языковой стандарт системы.
Введите "регион" в поле поиска меню "Пуск" (без кавычек)
Откройте апплет « Регион и язык».
Перейдите на вкладку « Администрирование », а затем в разделе "Язык" для программ, не поддерживающих Юникод, нажмите « Изменить языковой стандарт системы». Если вас попросят ввести пароль администратора или подтверждение, введите пароль или предоставьте подтверждение.
Выберите язык и нажмите кнопку ОК.
Если вам будет предложено перезагрузить компьютер, нажмите « Перезагрузить сейчас», чтобы сделать это.
В формате ZIP давно отсутствовала поддержка Unicde, и это расширение было добавлено только 6 лет назад в 2006 году. Согласно ПРИЛОЖЕНИЮ D - Языковая кодировка (EFS) спецификации формата файла ZIP:
Вы можете прочитать мрачные подробности об этом специфическом отсутствии поддержки Unicode в Windows в следующей серии постов Microsoft Майкла Каплана:
PS «Я только что узнал, что архивирование с помощью" send to "в Windows работает так же хорошо, как" лучшее "архивирование Winrar, но намного быстрее». - Я только что проверил это, несколько раз. Помимо дополнительного времени, которое требуется для открытия диалогового окна WinRAR « Добавить в архив », выберите ZIP в качестве формата архива и нажмите "ОК", фактическое время, затрачиваемое на сжатие, было примерно одинаковым для обоих, в целом WinRAR занимал меньше времени (хотя различия были незначительными ). Если вы заметили огромную разницу, это могло произойти, только если вы сначала протестировали WinRAR для набора файлов, а затем сразу же сжали те же файлы с помощью Compressed Folders. Естественно, что во второй раз Windows уже кэшировала данные, поэтому процесс занял часть времени, которое он занимал изначально. Сделайте это в обратном порядке с набором файлов, к которым вы ранее не обращались во время текущего сеанса Windows, и я уверен, что результат будет обратным. :)
Что касается окончательного сжатого размера, в зависимости от данных / комбинации форматов файлов в архиве, я обнаружил, что любой из двух справляется лучше (хотя опять-таки различия были незначительными). Конечно, форматы 7z или Rar (или даже WinZip ZipX) намного лучше в этом отношении и будут превосходить обычные ZIP почти каждый день (то есть ZIP использует традиционный / устаревший алгоритм дефляции вместо PPMd и тому подобное).
Этичный хакинг и тестирование на проникновение, информационная безопасность
На самом деле, это действительно не особенно сложная тема — достаточно один раз понять суть, а затем при необходимости можно пользоваться таблицами ASCII/Hex/Bin значений символов, либо конвертировать используя соответствующие утилиты или встроенные в языки программирования функции. Если у вас пробел в этих знаниях, то это статья должна вам помочь.
Смотрите также:
Для кого эта статья
Вам абсолютно точно нужно понимать суть ASCII кодирования символов, а также шестнадцатеричную запись строк если вы:
- программируете
- занимаетесь отладкой и обратным инжинирингом программ
- выполняете тесты на проникновение (шестнадцатеричная и другие варианты записи широко используются для обхода файловых файерволов, фильтров и других систем защиты веб-приложений)
Примечание: правда, я исхожу из того, что вы знаете что такое:
- система счисления
- десятичная, шестнадцатеричная, двоичная система счисления
- умеете конвертировать числа между этими системами счисления
- логические операции И, ИЛИ
По идее, это охватывается базовым курсом информатики и логики на любых специальностях в ВУЗе (некоторые учат это уже в школе) и это должен знать каждый — поэтому я не будут на этом останавливаться. Если вы не знаете даже этого, то прежде чем читать эту заметку, начните с ликвидации ваших более базовых пробелов про системы счисления.
Что такое ASCII
Не будем тратить время на экскурсы в историю о появлении ASCII — рассмотрим только с практической точки зрения.
А с практической точки зрения в ASCII каждому символу соответствует его порядковый номер. Этот порядковый номер можно записать десятичным числом, например, символу «h» соответствует 104, а символу «i» соответствует 105.
Любое десятичное число можно конвертировать в шестнадцатеричное, двоичное или восьмеричное число. Зачем конвертировать? Главная причина в том, что компьютер в своей основе не работает с десятеричными числами, а использует двоичные, которые удобно записывать в более компактном виде — конвертировать в шестнадцатеричные. Поэтому в определённых программах широко используются эти записи: в шестнадцатеричных редакторах, отладчиках. Также шестнадцатеричную/двоичную запись строк программист может использовать для различных манипуляций, например, с целью шифрования или другой обработки. Например, для тех же самых побитовых операций, к которым мы вернёмся позже.
Итак, вот таблицы символов, с их цифровым представлением в различных системах счисления:
Контрольные символы ASCII (некоторые из них больше не актуальны, так как подразумевают использование в телетайп связи)
line feed - перевод строки: Команда для опускания каретки печатающего устройства на одну строку вниз. Обозначение конца строки текстового файла различается в семействах операционных систем:
- для «UNIX» — одиночный символ «LF»;
- для «Windows» — последовательность символов «CR LF».
Во многих языках программирования символ обозначается как «\n». Нажатие на клавишу ↵ Enter при выводе текста переводит строку.
substitute - «Подставить»: Символ ставится:
В настоящее время символ вставляется нажатием комбинации клавиш Ctrl + Z и используется для обозначения конца файла в операционных системах «DOS» и «Windows».
delete - стереть последний символ: Символом «DEL» (состоящим в двоичном коде из всех единиц) можно было «забить» любой символ. Устройства и программы игнорировали «DEL» так же, как и «NUL».
Код этого символа происходит из первых текстовых процессоров с памятью на перфоленте: в них удаление символа происходило «забиванием» его кода дырочками (обозначавшими логические единицы).
Печатные символы ASCII
Расширенные символы ASCII
Как отличить двоичное, шестнадцатеричное и десятичное написание друг от друга
Конкретные нотации могут различаться в зависимости от языка программирования или используемой программы (printf, printf, xxd, hexdump и так далее), но обычно используются следующие правила:
По умолчанию целочисленный литерал (число) — это десятичное целое число.
Для обозначения двоичного целочисленного литерала перед ним используется 0b или 0B (ноль B). Иногда буква b ставится позади числа.
Для обозначения восьмеричного целочисленного литерала, перед ним используется 0 (ноль).
А для обозначения шестнадцатеричного целочисленного литерала, перед ним используется 0x или 0X (ноль X).
В Radare2 можно увидеть такую запись:
Обратите внимание на переменную eax, значение которой равно 0x6d, а затем дано пояснение 109 ascii. То есть в шестнадцатеричном виде значение переменной eax равно 0x6d, в десятеричном это 109 что соответствует символу m.
ASCII и HTML
Многие программы понимают шестнадцатеричную запись, правда вид записи может различаться от конкретной программы и языка программирования.
В JavaScript шестнадцатеричные строки записываются в виде экранированной последовательности:
Можно записать код символов в восьмеричной системе счисления:
Аналогично Bash понимает такие строки:
И PHP их обрабатывает верно:
Побитовые операции над строками
К побитовым операторам относятся:
- И (AND)
- Отрицание
- Побитовое (включающее) ИЛИ (OR)
- Побитовое ИСКЛЮЧАЮЩЕЕ ИЛИ (XOR)
- Побитовый сдвиг (влево и вправо)
Если вспомнить школьный/ВУЗовский курс логики, то там такие операции выполняются с нулями и единицами. То есть их можно выполнить с бинарными данными, например, с двоичными числами.
В языках программирования можно делать побитовые операции с десятичными числами, например Побитовое ИСКЛЮЧАЮЩЕЕ ИЛИ (XOR) в PHP:
Дело в том, что числа будут автоматически переведены в двоичный вид и операция будет выполнена уже над двоичными числами.
Пример выше можно проверить вручную. Операция ИСКЛЮЧАЮЩЕЕ ИЛИ (XOR) означает, что устанавливаются только те биты, которые установлены либо только в $a, либо только в $b, но не в обоих одновременно.
8 и 5 в двоичном виде это соответственно 1000 и 101, можно также из записать так: 1000 и 0101.
- смотрим первый бит — в первом числе он установлен (1) а во втором — не установлен (0), следовательно, в конечном числе он будет установлен (1)
- смотрим второй бит — в первом числе он не установлен (0) а во втором — установлен (1), следовательно, в конечном числе он будет установлен (1)
- смотрим третий бит — в первом числе он не установлен (0) и во втором — не установлен (0), следовательно, в конечном числе он не будет установлен (0)
- смотрим четвёртый бит — в первом числе он не установлен (0) а во втором — установлен (1), следовательно, в конечном числе он будет установлен (1)
Получаем конечное число: 1101
То есть в PHP операция проделана правильно, даже не смотря на то, что мы указали не двоичные числа, а десятичные.
Когда говорят о побитовых операциях со строками, то имеют в виду, что используется ASCII код символа (который затем переводиться в двоичный вид). После выполнения требуемой операции, выполняется обратное преобразование — число переводиться в ASCII символ.
Кстати, про ИСКЛЮЧАЮЩЕЕ ИЛИ (XOR) — у этой операции есть интересное свойство:
- Как мы уже видели, 8 ^ 5 = 13
- При этом: 13 ^ 5 = 8
- И: 8 ^ 13 = 5
То есть можно взять строки и выполнить между ними операцию XOR. В результате получиться бессмысленный набор символов. Затем если между этой бессмысленной строкой и любой из первоначальных строк вновь выполнить операцию XOR, то получиться вторая начальная строка.
На этом основано простейшее симметричное шифрование: исходный текст шифруется паролем с помощью XOR. То есть с первым символом текста и первыми символом пароля делается операция XOR, затем со вторым символом шифруемого текста и вторым символом пароля делается операция XOR и так далее, пока шифруемый текст не кончится. Поскольку пароль обычно короче шифруемого текста, то когда он заканчивается, вновь выполняется переход к первому символу пароля и так далее много раз.
В результате получается бессмысленный набор символов, которые можно расшифровать этим же паролем выполняя эту же операцию XOR.
Правда, зашифрованные таким образом тексты часто приводятся для тренировки в литературе по взлому шифров: если текст достаточно длинный, то с помощью статистического анализа того, как часто в нём встречаются символы и сравнивая эту частотность с естественной частотностью букв в языке, сначала вычисляют длину пароля, а затем и сам пароль. То есть это крайне ненадёжный шифр.
Вычитание числа из строки и прибавление к строкам числа
В статье «Анализ вредоносной программы под Linux: плохое самодельное шифрование» рассматривается шифрование, которое основано на прибавлении или вычитании числа к символу строки (на основе позиции символов). Как я думаю вы уже поняли, используется аналогичный приём: берётся ASCII код символа и из этого числа делается вычитание или находиться сумма с ним, а затем полученное число опять переводят в ASCII символ.
Побитовые операции с цифрами: нужно переводить в двоичную систему сами цифры или брать двоичные значения ASCII каждого символа?
Допустим, мы хотим сделать побитовую операцию 5 OR 7. Какой будет результат? Микропроцессор не работает ни с числами в десятичной системе, ни с ASCII строками — микропроцессор работает только двоичными числами.
То есть возникает вопрос:
2. Это ASCII строки?
Рассмотрим оба эти варианта, чтобы понять, насколько они различаются.
1.
5 и 7 — это числа
Число 5 в двоичной системе это 101, а число 7 в двоичной системе это 111.
В результате выполнения
Будет получено 111. То есть результатом данной операции является число 7.
2.
5 и 7 — это ASCII строки
Смотрим таблицу ASCII символов, там цифре 5 соответствует код 00110101, а цифре 7 соответствует код 00110111. Делаем побитовую операцию OR между ними:
00110101 OR 00110111
Получаем: 110111, что в таблице ASCII символов также соответствует символу «7».
Итак, в принципе, можно напрямую переводить данные цифры в их двоичные значения, либо можно использовать двоичные значения их символов. Самое главное, придерживаться одной и той же схемы и преобразовывать с учётом выбранного пути. Ведь если вы делаете логическую операцию (например OR), с ASCII значением, а затем начинаете толковать полученный результат как число, то такое число (в нашем примере), будет равно 110111 = 55 (в десятичной системе). Или наоборот, вы сделали побитовую операцию между 101 OR 111, а затем полученный результат 111 начинаете трактовать как ASCII код символа — то тогда вместо числа вы получите управляющий символ «звуковой сигнал: звонок».
Заключение
Подытожим: у всех символов (печатных и непечатных) есть свой код ASCII. Кстати, ASCII — это ведь одна из многих кодировок. Существует много разных кодировок, например, очень популярна UTF8 и там у символов свои собственные коды. Причём используя экранированные последовательности можно записывать символы UTF8 по аналогии, как это показано с ASCII.
Читайте также: