Perl 6是否具有与Python的bytearray方法等效的功能?

时间:2018-06-24 10:45:41

标签: python encoding perl6

在Perl 6 doc中找不到bytearray方法或类似方法,就像在Python中一样。在Python中,bytearray定义为:

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

返回一个新的字节数组。 bytearray类是一个可变的整数序列,范围为0 <= x <256。它具有可变序列类型中介绍的大多数可变序列的常用方法,以及str类型具有的大多数方法,请参见字符串方法。

Perl 6是否应提供此方法或某些模块?

2 个答案:

答案 0 :(得分:10)

我认为您正在寻找Buf-可变的(通常是无符号的)整数序列。使用:bin打开文件将返回Buf

答案 1 :(得分:8)

brian d foy answer本质上是正确的。您几乎可以将this code转换为Perl6

from matplotlib import pyplot as plt
vals = [-4, -6, -8, -6, -5]
plt.bar(range(len(vals)), vals)

但是,声明不一样:

fig, ax1 = plt.subplots(1,1)
ax1.bar(range(len(vals)), vals)
ax1.invert_yaxis()
在Python中

在Perl 6中将等效于此

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

要使用与错误转换等效的方法,由于Perl 6进行Unicode标准化的方式不同,因此该方法有所不同。您可能必须使用UTF8 Clean 8编码。

但是,对于大多数用途,我认为bu = bytearray( 'þor', encoding='utf8',errors='replace') 正确,如brian d foy所指示。