Perl 6是否具有Python的bytearray方法的等价物?

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应该提供这种方法还是某些模块?

bri*_*foy 10

我想你正在寻找Buf - 一个可变的序列(通常是无符号的)整数.打开文件:bin返回a Buf.


jjm*_*elo 8

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所指出的那样,是正确的.