Модераторы: korob2001, ginnie
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Строку в hex, Как сконвертировать 
V
    Опции темы
EvilsInterrupt
Дата 7.5.2010, 22:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Executables research
***


Профиль
Группа: Завсегдатай
Сообщений: 1019
Регистрация: 14.7.2007
Где: Железнодорожный, МО, Россия

Репутация: нет
Всего: 9



Есть строки вида:
Цитата

.0043F371: 55                           push        ebp
.0043F372: 57                           push        edi


удовлетворяющие условию:
Код

(\.[A-F0-9]{8}: )([A-F0-9]+)(.*)


Мне непонятно, как можно $2 переконвертить в байты, т.е. из анси в hex?
PM MAIL WWW ICQ Jabber   Вверх
gcc
Дата 7.5.2010, 22:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Агент алкомафии
****


Профиль
Группа: Участник
Сообщений: 2691
Регистрация: 25.4.2008
Где: %&й

Репутация: 1
Всего: 17



Код

@Hex = unpack("C*", "Purl Gurl Rocks");

print "@Hex\n";

$ascii = pack("C*", @Hex);

print $ascii;

PM WWW ICQ Skype GTalk Jabber   Вверх
EvilsInterrupt
Дата 7.5.2010, 22:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Executables research
***


Профиль
Группа: Завсегдатай
Сообщений: 1019
Регистрация: 14.7.2007
Где: Железнодорожный, МО, Россия

Репутация: нет
Всего: 9



gcc, т.е. мой код должен будет выглядеть примерно так?

Код

my @hex = unpack("C*",@2);
printf DESTFILE $hex;


где @2 это массив от захваченной группы $2 

все так ?

PM MAIL WWW ICQ Jabber   Вверх
EvilsInterrupt
Дата 7.5.2010, 23:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Executables research
***


Профиль
Группа: Завсегдатай
Сообщений: 1019
Регистрация: 14.7.2007
Где: Железнодорожный, МО, Россия

Репутация: нет
Всего: 9



Сейчас мой скрипт выглядит так:
Код

#!/usr/bin/perl
use strict;
use warnings;

sub ParseFile
{
    open (SRCFILE,  $_[0])      or die "Can't open source file";
    open (DESTFILE, ">$_[1]")   or die "Can't create destination file";

    while(<SRCFILE>)
    {
        chomp;
        if(/(\.[A-F0-9]{8}: )([A-F0-9]+)(.*)/)
        {
            my @bin = unpack("C*",$2);
            printf DESTFILE @bin;
        }
    }

    close(DESTFILE);
    close(SRCFILE);
}

ParseFile($ARGV[0],$ARGV[1]);


мне не понятно, как все же аски-байты к примеру два 0x30 0x31 и на экране будет показываться "01" , то как мне реально их в бинарный(hex) вид сконвертить, чтобы в результирующем байте не 30 31 было, а был 1 байт 01 ? 

основная задача сконвертировать аски-представление чисала в захваченной группе $2 в нормальный бинарный вид , поместить это в файл ;)
PM MAIL WWW ICQ Jabber   Вверх
EvilsInterrupt
Дата 8.5.2010, 10:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Executables research
***


Профиль
Группа: Завсегдатай
Сообщений: 1019
Регистрация: 14.7.2007
Где: Железнодорожный, МО, Россия

Репутация: нет
Всего: 9



решил так:
Код

            my $bin = pack('H*', $2);
            syswrite DESTFILE, $bin;


PM MAIL WWW ICQ Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl"
korob2001
sharq
  • В этом разделе обсуждаются общие вопросы по языку Perl
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Если ваш вопрос относится к CGI программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", можно скачать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0430 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.