П О Р Т А Л                            
С Е Т Е В Ы Х                          
П Р О Е К Т О В                        
  
Поиск по сайту:
                                                 
Главная

О проекте

Web-мастеру
     HTML & JavaScript
     SSI
     Perl
     PHP
     XML & XSLT
     Unix Shell

MySQL

Безопасность

Хостинг

Другое








Самое читаемое:

Учебник PHP - "Для Чайника".
Просмотров 3408 раз(а).

Иллюстрированный самоучитель по созданию сайтов.
Просмотров 5958 раз(а).

Учебник HTML.
Просмотров 3201 раз(а).

Руководство по PHP5.
Просмотров 5418 раз(а).

Хостинг через призму DNS.
Просмотров 4018 раз(а).

Подборка текстов стандартных документов.
Просмотров 55709 раз(а).

Учебник PHP - Самоучитель
Просмотров 2995 раз(а).

Документация на MySQL (учебник & справочное руководство)
Просмотров 4569 раз(а).

Внешние атаки...
Просмотров 3732 раз(а).

Учебник PHP.
Просмотров 2767 раз(а).

SSI в примерах.
Просмотров 37384 раз(а).



 
 
| Добавить в избранное | Сделать стартовой | Помощь





Руководство пользователя для GNU Awk

15. Библиотека функций awk

15.5 Перевод символов в числовой код

Одна из коммерческих реализаций awk имеет встроенную функцию ord, которая получает символ и возвращает численное значение этого символа в машинном множестве символов. Если цепочка, переданная ord, содержит более одного символа, используется только первый из них.

Обратная функция есть chr (аналогична функции с тем же именем в Паскале), которая получает число и возвращает символ. Обе функции могут быть просто написаны в awk; нет существенных причин для встраивания их в интерпретатор.

# ord.awk --- делает ord и chr # # глобальными идентификаторами:
# .ord.: численное значение символа
# .ord.init: функция инициализации .ord.
# # Arnold Robbins # arnold@gnu.org # Public Domain # 16 January, 1992
# 20 July, 1992, revised

BEGIN - .ord.init() "" function .ord.init( low, high, i, t) -
low = sprintf("%c", 7) # BEL есть ascii 7 если  (low == ""a")
- # regular ascii
low = 0 high = 127 "" else if (sprintf("%c", 128 + 7) == ""a") -
# ascii, отметка четности  low = 128 high = 255 "" else - # ebcdic(!)
low = 0 high = 255 ""
for (i = low; i != high; i++) -
t = sprintf("%c", i) .ord.[t] = i "" ""

Следует дать некоторые объяснения о числах, используемых в chr. Наиболее известное сейчас множество символов есть ASCII. Хотя восьмибитовый байт может иметь 256 различных значений (от нуля до 255), ASCII определяет только символы со значениями от 0 до 127. *2* По крайней мере один изготовитель компьютеров, которого мы знаем, использует ASCII с отмеченной четностью, означающей, что самый левый бит в байте имеет всегда значение 1. Это значит, что на таких системах


2 ASCII используется во многих странах для представления в значениях от 128 до 255 специальных символов этой страны. Если ваша система использует такое расширение, вы можете упростить .ord.init до простого цикла от 0 до 255.

символы имеют численное значение от 128 to 255. Наконец, большие универсальные системы используют систему символов EBCDIC, которая использует все 256 значений. Хотя на некоторых старых системах используются другие множества символов, о них не стоит говорить.

function ord(str, c) -
# интерес представляет только первый символ
c = substr(str, 1, 1) return .ord.[c] ""

function chr(c) -
# превращайте с в число добавлением 0
return sprintf("%c", c + 0) ""

#### test code #### # BEGIN " # - # for (;;) - # printf("enter a character: ")
 # if (getline var != 0) # break # printf("ord(%s) = %d"n", var, ord(var)) # ""
# ""

Очевидным усовершенствованием для этих функций было бы перенести код функции .ord.init в тело правила BEGIN. Это и было так написано первоначально для облегчения разработки. Имеется и "тестовая программа" в правиле BEGIN для проверки функции. Она превращена в комментарий для увеличения производительности.

Назад | Вперед
Содержание (общее) | Содержание раздела



Если Вы не нашли что искали, то рекомендую воспользоваться поиском по сайту:
 





Copyright © 2005-2016 Project.Net.Ru