在python中将任何类型更改为字节
在python中,您可以将python中的任何类型更改为如下字符串:在python中将任何类型更改为字节,python,byte,Python,Byte,在python中,您可以将python中的任何类型更改为如下字符串: str(数据) 有没有一种方法可以像str(data)方法一样将任何类型更改为字节?(没有if声明) 类似于字节(数据): #示例 data=“你好” data=bytes(data)#数据现在是b'hello' 数据=23423 数据=字节(数据)#数据现在是b'23423' 数据=b'nice' 数据=字节(数据)#数据现在是b'nice' 数据=[0,3] 数据=字节(数据)#数据现在是b'[0,3]' 使用str(
str(数据)
有没有一种方法可以像str(data)
方法一样将任何类型更改为字节?(没有if声明)
类似于字节(数据)
:
#示例
data=“你好”
data=bytes(data)#数据现在是b'hello'
数据=23423
数据=字节(数据)#数据现在是b'23423'
数据=b'nice'
数据=字节(数据)#数据现在是b'nice'
数据=[0,3]
数据=字节(数据)#数据现在是b'[0,3]'
使用str(data).encode()
或bytes(str(value),“utf-8”)
不是我想要的,因为当数据data=b'dsfsdf'
时,输出是b“b'dsfsdf'
当你为自定义对象调用str(data)
时,它基本上是在调用数据,因此,通过给对象一个\uuuu str\uuu
方法,您可以精确地指定str(数据)
的实际外观。对于字节(数据)
您只需实现\uuuuuu字节
:
In [1]: class A:
...: def __bytes__(self):
...: return b"A"
In [2]: bytes(A())[0] == 65
Out[2]: True
In [3]: bytes(A())
Out[3]: b'A'
In [4]: str(A())
Out[4]: "<class '__main__.A'>"
如果您想要更健壮的东西,请使用类似的序列化库,因为注释中有关于使用pickle
包进行序列化的建议,下面是执行序列化的代码
import pickle
data = "hello"
byte_data = pickle.dumps(data)
print(pickle.loads(byte_data))
data = 23423
byte_data = pickle.dumps(data)
print(pickle.loads(byte_data))
data = b'nice'
byte_data = pickle.dumps(data)
print(pickle.loads(byte_data))
data = [0, 3]
byte_data = pickle.dumps(data)
print(pickle.loads(byte_data))
output :
hello
23423
b'nice'
[0, 3]
ps:感谢您建议使用pickle字节(str(value),“utf-8”)
这是否回答了您的问题@Martheen我正在尝试不导入libraries@lordcommander,这不在你的问题中。没有一个内置函数可以完全满足你的需要。如果是instance(数据,字节)或者str(数据),那么基本上需要数据。encode()
我编辑了我的问题
import pickle
data = "hello"
byte_data = pickle.dumps(data)
print(pickle.loads(byte_data))
data = 23423
byte_data = pickle.dumps(data)
print(pickle.loads(byte_data))
data = b'nice'
byte_data = pickle.dumps(data)
print(pickle.loads(byte_data))
data = [0, 3]
byte_data = pickle.dumps(data)
print(pickle.loads(byte_data))
output :
hello
23423
b'nice'
[0, 3]