代码之家  ›  专栏  ›  技术社区  ›  chenyf

perl 6是否有一个与python的bytearray方法等价的方法?

  •  8
  • chenyf  · 技术社区  · 6 年前

    我找不到 bytearray Perl6中的方法或类似方法 doc 就像蟒蛇一样。在python中, bytearray 定义如下:

    class bytearray([source[, encoding[, errors]]])
    

    返回一个新的字节数组。ByteArray类是0<=x<256范围内的可变整数序列。它有大多数常见的可变序列方法,如可变序列类型中所述,以及str类型拥有的大多数方法,请参阅string方法。

    Perl 6是否应该提供这个方法或一些模块?

    2 回复  |  直到 6 年前
        1
  •  8
  •   jjmerelo    6 年前

    布瑞恩D Fy answer 本质上是正确的。你几乎可以翻译 this code 进入第六层

     my $frame = Buf.new; 
     $frame.append(0xA2); 
     $frame.append(0x01); 
     say $frame; # OUTPUT: «Buf:0x<a2 01>␤»
    

    然而,声明是不一样的:

    bu = bytearray( 'þor', encoding='utf8',errors='replace')
    

    在Python中,与Perl 6相当。

    my $bú =  Buf.new('þor'.encode('utf-8')); 
    say $bú; # OUTPUT: «Buf:0x<c3 be 6f 72>␤» 
    

    为了使用等价于错误转换的方法,由于Perl 6接近Unicode标准化的方式,这种方法是不同的;您可能不得不使用 UTF8 Clean 8 编码。

    不过,我想大多数情况下 Buf 正如brian d foy所指出的,是正确的。

        2
  •  10
  •   brian d foy JRFerguson    6 年前

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