use strict; use warnings; my $text = "COM7:"; my @pairs = unpack "(A2)*", uc unpack "H*", $text; for (my $i = 0 ; $i <= $#pairs ; ++$i) { printf "0x%02s%02s\n", reverse $pairs[$i] || 0, $pairs[++$i] || 0; } print "0x0000\n"; # :-) __END__ 0x4F43 0x374D 0x003A 0x0000