我在单元测试测试用例中有以下代码(作为示例)
def test(self):
a = array('u','\0'*3)
a[0] = 'h'
a[1] = 'h'
a[2] = 'h'
self.assertEqual(a.tostring(), "hhh")
断言失败并出现以下错误:
AssertionError: b'h\x00\x00\x00h\x00\x00\x00h\x00\x00\x00' != 'hhh'
现在我明白我创建的数组是 Unicode 字符的,长度为 4 个字节,因此我输入的每个字符都有额外的 3 个 NUL 字节。我的问题是:
- 我可以将字符串“hhh”转换为断言内联的 Unicode 表示形式吗?
- 是否有用于创建数组的 ascii 选项?
编辑:回答出现的问题: 1.我使用的是Python 3 2. array 来自模块 array,可以通过以下方式导入: from array import array
最佳答案
我想您正在使用 Python3,它似乎缺少 array
的 'c'
选项。
在这种情况下,我会这样做
a = array.array("b",4*(0,))
a[0] = 'h'
a[1] = 'h'
a[2] = 'h'
另一种选择是
a=array.array('u', "hhh") # the same as yours, but shorter
a.tounicode()
但是你有一个 unicode 字符串而不是 bytes()
对象。
关于python array.tostring() 中有 NUL 字节,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8377165/