Rajesh Kumar Yuvaraj Ответов: 1

Как я могу конвертировать приведенный ниже java-код в Perl?


I am in need of below Java code converted to PERL script. Can anyone help me in this context?

<pre> public static String hex(byte[] bytes) {
    char[] c = new char[bytes.length * 2];
    for (int i = 0; i < bytes.length; i++) {
        int j = (bytes.length - i - 1) * 2;
        c[(j + 0)] = HEX[(bytes[i] >> 4 & 0xF)];
        c[(j + 1)] = HEX[(bytes[i] >> 0 & 0xF)];
    }
    return new String(c);
}


Что я уже пробовал:

я понятия не имею о PERL.Пожалуйста, помогите мне в этом отношении.

CPallini

Является ли Perl обязательным? Вы не можете использовать другой язык сценариев?

1 Ответов

Рейтинг:
0

Jochen Arndt

Первый шаг состоит в том, чтобы понять, что делает код:
Код, по-видимому, преобразует массив байтов в строку шестнадцатеричных символов, где самый младший байт находится в правой части строки (это зависит от определения HEX массив, но я думаю, что это просто отображение символов от 0 до 9 и от a до f).

Затем вы можете найти в интернете что-то вроде "perl hex array to string". Поступая таким образом, вы найдете такие решения, как perl - преобразование массива целых чисел в строку шестнадцатеричного переполнения стека[^].

С моей точки зрения вам следует использовать одну из мощных функций преобразования Perl: распаковать - perldoc.perl.org[^]. Если входным аргументом является массив, см. приведенную выше ссылку SO.

Если это любая переменная, содержащая двоичные данные, то все гораздо проще:

my( $hexString ) = unpack( 'H*', $bytes );

Пример:
my $bytes = "123\x0A";
my( $hexString ) = unpack( 'H*', $bytes );
print "$hexString\n";
Выход:
3132330a