2012-07-08 82 views
2

我已經寫了一個小的Perl應用程序來讀取串行端口。當我運行我的小腳本時,我會收到數據,但它寫在不可讀的標記中。它顯示爲* I ??。但是,如果我做在Perl中將原始十六進制轉換爲可讀的十六進制?

perl test.pl | hexdump 

我得到所需的數據。十六進制數據對我來說很有意義。有誰知道我怎麼可以得到這個輸出使用Perl而不使用hexdump? 現在我使用print($ data)來打印我的數據。

回答

4

「原始十六進制」並不意味着什麼;你得到的是一串你想要轉換成文本表示的字節。要做到這一點,您可以使用unpack。例如,

my $bytes = read_from_serial_port(); 
my $hex = unpack 'h*', $bytes; 

使用H而不是h如果你想相反的字節順序。 (我總是忘記哪個是哪個)

+0

是的..這正是我需要的..非常感謝! – 2012-07-08 08:42:10

相關問題