On Nov 18, 2003, at 10:33 AM, Jeff Westman wrote:

There must be an easier way to convert a basic ascii string to hex. I tried
using ord/chr/unpack/sprintf(%x) combinations and just dug my hole deeper.
I'm not interested in using any additional modules, just straight, "basic"
perl. This works, but exactly elegant:

This one-liner produces identical output:


perl -e 'print "x", unpack("H*", "some string"), "\n"'

That doesn't seem too complex, does it?

Hmm, let's take a look...

#!/bin/perl

use strict;
use warnings;

my $str = "some string";
my $hex = unpack('H*', "$str");

The line above is 100% of the hex conversion. That's too cumbersome??? I doubt we can do much better.


my $len = length($hex);
my $start = 0;

print "x'";
while ($start < $len) {
    print substr($hex,$start,2);
    $start += 2;
}
print "'\n";

Ah, the long part! Printing two characters at a time. Any reason to do this? Well, surely we can do it quicker:


print 'x';
for (my $i = 0; $i < length $hex; $i+=2) {
        print substr $hex, $i, 2;
}
print "\n";

Is that better? I'll let you decide. It's pretty C-looking, but that probably doesn't have to be a bad thing.

Any of this help?

James


-- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]



Reply via email to