Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Perl: Системное программирование > Путаница строк и чисел при побитовых операциях |
Автор: SvetRus 14.9.2008, 19:51 | ||||||||||
Понадобилось портировать приложение с C++ в Perl. Столкнулся с неожиданной проблемой.
Начал писать это в Perl'e
Отлаживаюсь - переменная ксорится не с 6, а с аскии кодом 6, т.е. с 0x36. Порылся в мануале, нашёл функцию vXXX.YYY.ZZZ - сделал так:
Вроде работает, хоть и через .... лишную переменную. Дальше необходимо сделать побитовое И.
Написал на Perl'e
Таже проблема, операция проходит не с числом, а с символом '4'... сделал через переменную($q=v4) - стало сходиться с кодом на C++, но тут я столкнулся с проблемой - результат операции оказывается "строкой", а не числом. При попытке сравнить его в if($n_shift!=0)}else{} он всегда отправляет программу в else, хотя при распечатке лога работы(print в командную строку этой переменной) то "пустое место", символы. Есть ли в Perl'e операторы позволяющие жестко обозначить в каком виде я хочу использовать переменную??? Или проще будет сделать Dll на С++ и её подшивать к Perl-у? Последние часа 4 у меня ощущение, как будто я пытаюсь шурупы не закручивать шуруповёртом, а забивать им ![]() |
Автор: ginnie 15.9.2008, 13:17 | ||
Уважаемый SvetRus, для Вашей задачи надо использовать функции pack() и unpack():
|
Автор: SvetRus 15.9.2008, 14:49 |
ginnie, большое спасибо, теперь буду закручивать шурупы, а не забивать!! ![]() Глянул мельком мануал - pack(), unpack() позволят решить путаницу с "типами" данных!! |