2013-03-06 39 views

回答

3
use Encode; 

my $byte1 = "C3"; 
my $byte2 = "A9"; 
my $bytes = chr(hex($byte1)) . chr(hex($byte2)); 
print decode_utf8($bytes); 
+0

此答案完美工作!我很感谢帮助。 ikegami的答案帮助我了解了十六进制值发生了什么。 – iohans 2013-03-06 10:09:17

1

啊哈YSTH打我:字符串文字的

#!/usr/bin/env perl 

use strict; 
use warnings; 

use Encode; 
use utf8::all; 

my $byte1 = "C3"; 
my $byte2 = "A9"; 
my $bytes = join '', map {chr hex} $byte1, $byte2; 

print decode_utf8($bytes); 
+0

感谢您的答案。这也是有效的。 – iohans 2013-03-06 10:10:07

3

觉得作为一个小型的语言。你不能这样做

"\x$hex" 

任何比你更可以做

my $for = 'for'; 
$for (1..4) { } 

但也有很多方法可以做你想做的。

my $bytes = join '', map chr hex, @bytes_hex; 
my $bytes = pack 'C*', map hex, @bytes_hex; 
my $bytes = pack '(H*)*', @bytes_hex; 
+0

感谢您的解释。 “\ xCA”部分让我认为这是一个字符串,因为0xCA没有被引用。 – iohans 2013-03-06 10:11:22

相关问题