Ключевые слова:perl, example, (найти похожие документы)
Date: Tue, 13 Aug 2002 05:08:03 +0600
From: Andrey Sapozhnikov <sapa@icb.chel.su>
Newsgroups: fido7.ru.perl
Subject: Преобразования между числами и их строкыми представлениями в Perl
> Hужно записать в файл шестнад. числа, т.е. записывая \x41 - все ОК, но если мне
> нужное число я вычисляю, то как его потом записать как шестнад. число?
Перво-наперво надо навести порядок в понятиях. Шестнадцатеричных
чисел не существует, существует шестнадцатеричное представление
чисел. Так шестнадцатеричное представление числа "десять" есть A,
двоичное представление числа "десять" - 1010 и т.д.
Скалярные переменные в Перл могут хранить как числа так и их
строковые представления (они также могут хранить и другие
значения, например "числа с плавающей точкой", но нас они
пока не интересуют). Преобразования между числами и их
строкыми представлениями в десятичной системе в Перл прозрачны,
т.е. выполняются автоматически, остальные варианты преобразований
необходимо осуществлять явно. Hапример:
$x_dec = 10; # Переменная $x_dec содержит число "десять"
$x_10 = "10"; # Переменная $x_10 содержит строку с десятичным
# представлением числа "десять"
В данном случае эти переменные практически идентичны. Т.е.
print $x_dec;
print $x_10;
напечатают строку "10" (число из $x_dec будет преобразовано
в десятичное представление автоматически). А
$y = $x_dec + 1;
$z = $x_10 + 1;
запишут в переменные $y и $z число "одиннадцать" поскольку
строка из $x_10 будет автоматически преобразована в число из
его десятичного представления. Остальные часто используемые
преобразования:
$a_hex = sprintf('%X', 10); # Число в строку с его шестнадцатеричным
# представлением
$a_hex = sprintf('%X', "10"); # строку с десятичным представлением можно
# точно так же преобразовать в строку с
# десятичным...
$a = 0xA; # Шестнадцатеричные представления чисел можно
# использовать в константах. В $a будет
# число "десять"
$a = hex("A"); # Строку с шестнадцатеричным
# представлением числа - в число
А судя по приведенному Вами примеру, Вам нужно записать в файл
байт (октет) со значением XX, где XX задан в виде строки с его
шестнадцатеричным представлением.
$x = "7F";
$code = hex($x);
print FILE ord($code);
Если значение задано в виде числа или его десятичном представлении,
достаточно просто:
print FILE ord($x);