我有一堆按顺序排列的随机位,其中一些是 9 和 10。我可以使用如下所示的 perl 脚本将 8 位二进制数据转换为字符。
perl -lape '$_=pack"(B8)*",@F'
但我需要将其转换为 utf-16 字符,并且需要与所示类似的方法。我该怎么做?
PS:我在 bash 上使用 utf-16 字符没有任何问题。
答案1
在 perl 中,你可以使用十月将二进制数转换为十进制数。然后,使用克里斯从代码点转换为字符。编码然后可以将字符编码为 UTF-16。
#!/usr/bin/perl
use warnings;
use strict;
use Encode;
my $in = '100000101';
my $codepoint = oct "0b$in";
print encode('UTF-16', chr $codepoint);
或者,用一行代码来表达:
printf 100000101 | perl -MEncode -wne 'print encode("UTF-16", chr oct "0b$_")'