che*_*nyf 8 python encoding perl6 raku
我bytearray在Perl 6 doc中找不到像Python中那样的方法或类似方法.在Python中,bytearray定义如下:
class bytearray([source[, encoding[, errors]]])
Run Code Online (Sandbox Code Playgroud)
返回一个新的字节数组.bytearray类是0 <= x <256范围内的可变整数序列.它具有可变序列的大多数常用方法,在可变序列类型中描述,以及str类型具有的大多数方法,请参阅字符串方法.
Perl 6应该提供这种方法还是某些模块?
brian d foy的答案基本上是正确的.您几乎可以将此代码转换为Perl6
my $frame = Buf.new;
$frame.append(0xA2);
$frame.append(0x01);
say $frame; # OUTPUT: «Buf:0x<a2 01>?»
Run Code Online (Sandbox Code Playgroud)
但是,声明不一样:
bu = bytearray( 'þor', encoding='utf8',errors='replace')
Run Code Online (Sandbox Code Playgroud)
在Python中与Perl 6中的相同
my $bú = Buf.new('þor'.encode('utf-8'));
say $bú; # OUTPUT: «Buf:0x<c3 be 6f 72>?»
Run Code Online (Sandbox Code Playgroud)
并且使用与错误转换等效的东西,由于Perl 6接近Unicode规范化的方式,该方法是不同的; 你可能不得不使用UTF8 Clean 8编码.
然而,对于大多数用途,我认为Buf,正如brian d foy所指出的那样,是正确的.