ИНФОРМАЦИЯ: Различия функция AscB-Asc-AscW и Chr, ChrB и ChrW

Переводы статьи Переводы статьи
Код статьи: 145745 - Vizualiza?i produsele pentru care se aplic? acest articol.
Развернуть все | Свернуть все

Аннотация

В течение многих лет основные программисты используют функции Asc и Chr для доступ и использовать набор символов ASCII. С появлением Юникода участие в основных операционных систем и приложений, потребность улучшенные версии функции Asc и Chr разработала. Для удовлетворения этого спрос, Microsoft Visual Basic (4.0 и выше) для Windows включает Функции AscW и ChrW и AscB/ChrB.

Дополнительная информация

Юникод является стандартом, который предназначен для замены стандарт ANSI Кодировка символов в числовой форме. Так как используется только стандарт ANSI один байт для представления каждого символа ограничивается максимум 256 различных символов. Во время этого достаточно для удовлетворения потребностей Английские говоря аудитории, оно неадекватно когда программного обеспечения по всему миру на рынке считается. Стандарта Юникод каждому символу соответствует представленный двумя байтами, таким образом, включает в себя весь набор знаков Юникод 65 536 возможных мест.

Microsoft Windows NT, Microsoft Windows 2000 и Microsoft OLE 2.0, полностью Юникода на основе, а все строки использования в Visual Basic (4.0 и выше) Формат Юникод. Функции AscW и ChrW разрешить доступ для всех знаков Юникода. Эти функции работают так же, как оригинал ASC и Chr функции, за исключением того, что они поддерживают аргументы от 0 до 65 535 а не только от 0 до 255. Многие объекты Visual Basic (например, отладка окна и метку и текстовое поле) возвращают "?" Если эти объекты не знаете способы отображения символов Юникода.

Так как теперь все строки внутренне представляются в формате Юникод, его не так прост, как он используется для представления двоичных данных в строку. С помощью функции Chr для назначения данных в строку не приведет к точно так же как и прежде. Например:
   stringvar = Chr(65)
				

результаты в длинной строки длиной 2 байта, где 1 байт имеет значение 65 и байт 2 имеет значение 0 (это представление Юникод буква «A»). Убедитесь в том, что имейте в виду, который не поддерживает преобразования из ANSI в Юникод всегда включают только Добавление второй байт со значением, равным нулю, как показано на Этот случай. Например большая часть ANSI знака коды в диапазоне 130 159 имеют совершенно разные значения Юникода. Повторите выполнение Отображается 'Debug.Print AscW(Chr(130))' и значение 8218.

В настоящее время Microsoft Windows требует немного прямой процессора, который означает, что в нескольких сущностей байт первый байт наименее значительные, и повышает значимость в последующих байтов. Это объясняет Почему символ Юникода «A» — это внутреннее следующим образом:
   -------------------
   |   65   |    0   |
   -------------------
     byte 0     byte 1
				

Функция AscB и ChrB функции могут использоваться для репликации, что используемые в выполнено с помощью функции Asc и Chr, так как эти функции позволяют Обработка количества один байт. Если требуется 4 байта Строка, которая содержит двоичные значения, 65, 66, 67 и 68 последовательно нажмите с помощью функции Chr работать не будет. Вместо этого необходимо использовать ChrB функция. Например:
   stringvar = ChrB(65) & ChrB(66) & ChrB(67) & ChrB(68)
				

Кроме того можно использовать возможности для создания массивов байтов новый Тип данных и обрабатывать двоичные данные таким образом.

Ниже приведено описание результатов некоторых простых использует эти функции для дальнейшего уточнения этой информации.

Печать Asc(Chr(255))--> «255»

Ничего нового здесь, кроме том, что функция Chr возвращает Юникода символ, который занимает два байта, вместо них байтовых символов ANSI.

Печать Asc(ChrB(255))--> 5 - недопустимый вызов процедуры.

Это использование возвращает ошибку, поскольку функция Asc всегда ожидает на не менее 2 байта параметра и функция ChrB только возвращает один байт.

Печать Asc(Chr(256))--> 5 - недопустимый вызов процедуры.

Несмотря на то, что функция Chr возвращает двухбайтовый символ Юникода, по-прежнему принимает только цифры от 0 до 255 для своего аргумента (Обратите внимание, на DBCS включена система Asc и Chr дескриптор двухбайтовые символы двухбайтовой кодировки DBCS, их для преобразования Юникод и обратно). Используя функцию ChrW позволяет получить доступ к полной 65 536 Расположение символов Юникода.

Печать AscW(ChrW(256))--> «256»

Это новая версия первой инструкции в этом разделе. ChrW функция принимает значение от 0 до 65 536 и возвращает этот знак (на 32-разрядные системы). Функции AscW интерпретирует это двухбайтовый знак как Символ Юникода и возвращает правильное Юникода значение этого символа.

Печать Asc(ChrW(256))--> «65»
Печать Asc(ChrW(5000))--> «63»

Что происходит, вот что сначала вычислить функцию ChrW. ChrW(256) является символ «A», и таким образом уменьшает для Asc("A"), и Юникод (и ANSI) номер «A», 65. Поскольку Visual Basic не знаете, как отобразить символ, представленный требуются только Chr(5000) Отображает «?», и как ожидается, Unicode и ANSI значение "?" — 63.

Печать AscB(Chr(65))--> «65»
Печать AscB(ChrW(256))--> «0»
Печать AscB(ChrW(257))--> «1»
Печать AscB(ChrW(555))--> «43»
Печать AscB(ChrW(65535))--> «255»

Все эти возвращаемые значения могут быть объяснены понимание каждого внутреннее представление символов (см. выше ссылку с прямым порядком байтов) а также тот факт, что функция AscB рассматриваются только первый байт символ, он получает. Визуально он выглядит как следующей схеме:
             -------------------
   Chr(65)   |   65   |    0   |
             -------------------
   Chr(256)  |    0   |    1   |
            -------------------
   Chr(257)  |    1   |    1   |
             -------------------
   Chr(555)  |   43   |    1   |
             -------------------
   Chr(65535)|   255  |  255   |
             -------------------
               byte 0    byte 1
				

Функция AscB просто возвращает содержимое первого байта символ.

Печать ChrB(65)--> ""

Visual Basic не печатается ничего для вызова этой функции ChrB поскольку Функция ChrB возвращаются только строки длиной один байт. Один байт строки типа Это значит, что значение nothing в Visual Basic, так как они не являются допустимым Знак Юникода (или набор символов).

Печать ChrB(65) & ChrB(0)--> «A»

В этом случае при объединении двух строк один байт в единый Строка длиной 2 байта. Поскольку результирующая битовый шаблон так же, как бит шаблон для кодировки Юникод «A», который печатает Visual Basic.

Свойства

Код статьи: 145745 - Последний отзыв: 2 июня 2011 г. - Revision: 4.0
Информация в данной статье относится к следующим продуктам.
  • Microsoft Visual Basic 5.0 Learning Edition
  • Microsoft Visual Basic 5.0 Professional Edition
  • Microsoft Visual Basic 6.0 Professional Edition
  • Microsoft Visual Basic 5.0 Enterprise Edition
  • Microsoft Visual Basic 4.0 Standard Edition
  • Microsoft Visual Basic 4.0 Professional Edition
Ключевые слова: 
kbinfo kbmt KB145745 KbMtru
Переведено с помощью машинного перевода
ВНИМАНИЕ! Перевод данной статьи был выполнен не человеком, а с помощью программы машинного перевода, разработанной корпорацией Майкрософт. Корпорация Майкрософт предлагает вам статьи, переведенные как людьми, так и средствами машинного перевода, чтобы у вас была возможность ознакомиться со статьями базы знаний KB на родном языке. Однако машинный перевод не всегда идеален. Он может содержать смысловые, синтаксические и грамматические ошибки, подобно тому как иностранец делает ошибки, пытаясь говорить на вашем языке. Корпорация Майкрософт не несет ответственности за неточности, ошибки и возможный ущерб, причиненный в результате неправильного перевода или его использования. Корпорация Майкрософт также часто обновляет средства машинного перевода.
Эта статья на английском языке:145745

Отправить отзыв

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com