Hex to Octal (3 digit) converer

Philip Lord philip at neoncluster.com
Mon May 4 02:23:23 CDT 2015


Thanks again, I’ve never used Perl either, but I just installed it.

So I saved your script as a textfile called HEX_OCTAL.pl:

perl -n -e 'print join(" ",map(sprintf("%03o",hex($_)),split(" ")))."\n";'

But unfortunately I get the following error when I try to run it:

syntax error at /Users/Philip/perl5/perlbrew/Perl_tests/HEX_OCTAL.pl line 1, near "n -e "
Execution of /Users/Philip/perl5/perlbrew/Perl_tests/HEX_OCTAL.pl aborted due to compilation errors.

Not sure what I’m doing wrong…being a noob, it could be anything!

Phil


> On May 4, 2015, at 5:58 PM, Don North <north at alum.mit.edu> wrote:
> 
> On 5/3/2015 9:31 PM, Philip Lord wrote:
>> Hi,
>> I’m looking for a program (or preferably an online conversion site, as I use Macintosh) that can convert a long stream of Hex, to 3 digit Octal.
>> I have found one site that works ok (http://www.kjetil-hartveit.com/blog/10/hex-binary-decimal-octal-and-ascii-converter <http://www.kjetil-hartveit.com/blog/10/hex-binary-decimal-octal-and-ascii-converter> <http://www.kjetil-hartveit.com/blog/10/hex-binary-decimal-octal-and-ascii-converter <http://www.kjetil-hartveit.com/blog/10/hex-binary-decimal-octal-and-ascii-converter>>), but the octal it outputs is not always 3 digits long. Unfortunately I then need to manually add the missing ‘0’s, which can be a huge pain for long listings, and open to human error.
>> 
>> For example the above site does….
>> 
>> Entering this:
>> 0E 09 11 1B 01 CD 05 00
>> 
>> Outputs this:
>> 16 11 21 33 1 315 5 0
>> 
>> But I want this:
>> 016 011 021 033 001 315 005 000
>> 
>> Does anyone know of a good site (or some good software)?
>> 
>> Much thanks
>> Phil
> 
> Here is a perl one-liner that does what you want:
> 
> perl -n -e 'print join(" ",map(sprintf("%03o",hex($_)),split(" ")))."\n";'
> 
> Example:
> 
> ~[514] perl -n -e 'print join(" ",map(sprintf("%03o",hex($_)),split(" ")))."\n";'
> 1 2 3 de ad be
> 001 002 003 336 255 276
> 
> I typed the red line as input data, the program output the blue line.
> You can also use standard unix file indirection or piping as well on the program line.
> 
> Don



More information about the cctalk mailing list