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

О проекте

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

MySQL

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

Хостинг

Другое








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

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

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

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

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

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

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

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

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

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

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

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



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





Руководство пользователя для 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