C# Python2.7:将构造函数变量初始化为字节数组
我知道这个代码:C# Python2.7:将构造函数变量初始化为字节数组,c#,python,python-2.7,C#,Python,Python 2.7,我知道这个代码: public class ClassA { public byte var1; } class ClassA(object): def __init__(self): self.var1 = bytes() # or b'' 可以转换为以下代码: public class ClassA { public byte var1; } class ClassA(object): def __init__(self):
public class ClassA
{
public byte var1;
}
class ClassA(object):
def __init__(self):
self.var1 = bytes() # or b''
可以转换为以下代码:
public class ClassA
{
public byte var1;
}
class ClassA(object):
def __init__(self):
self.var1 = bytes() # or b''
但是,如果var1
是一个字节数组,该怎么办呢
public byte[] var1;
通常,我会:
[bytes(i) for i in myList]
但是在这种情况下,不存在像myList
这样的变量来填补这个位置,这就给我留下了[字节(i)for i in]
,这显然在语法上是无效的
与字节相关()
不是C#字节的等价物。Python中没有C#字节的直接等价物;最接近的是一个普通的int。我认为C类的最直接的翻译是。
class ClassA(object):
def __init__(self):
self.var1 = 0
字节
对象是不可变的字节序列。如果您想要一个可变的字节序列,可以使用一个或普通的列表,也可以使用一个。除非我有具体的理由去做,否则我可能会选择这个名单,真的:
class ClassA(object):
def __init__(self):
self.var1 = []
注意,bytearray
和bytes
表示无符号字节序列;它们的元素从0到255,而不是从-128到127。一个数组。数组('b')
将是一个有符号字节序列。是什么使0
比bytes()
或b'
更简洁?我对这个话题不太熟悉。@CtrlS:这不是关于什么更简洁;这是关于编写代码,实际上意味着正确的事情。(0
更简洁,是1个字符而不是7或3个字符,但这并不重要。)也许简洁是个错误的词……我想我真正想问的是bytes()
和0
有何不同?@CtrlS:bytes()
是一个不可变的0字节序列0
是整数0。因此不同之处在于bytes()表示多个字节,而0显然是单个值。好的,谢谢。