如何将字符串转换为字节

2024-06-28 12:21:38 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用的是pythonv2.7.3,正在尝试进行转换,但遇到了一些问题。你知道吗

这是我希望的工作方式:

testString = "\x00\x13\xA2\x00\x40\xAA\x15\x47"
print 'Test String:',testString 

这将产生以下结果

TestString: ¢@ªG

现在我加载与上面相同的字符串以及一些其他数据:

\x00\x13\xA2\x00\x40\xAA\x15\x47123456

导入SQLite3数据库,然后将其从数据库中取出,如下所示:

cur.execute('select datafield from databasetable')
rows = cur.fetchall()
if len(rows) == 0:
    print 'Sorry Found Nothing!'
else:
    print row[0][:32]

但是,这会产生以下结果:

\x00\x13\xA2\x00\x40\xAA\x15\x47

我不知道如何将数据库存储的字符串转换为bytes字符串,如果是这样的话,就像第一段代码那样。我实际上需要它以这种格式加载到一个变量中,这样我就可以将它传递给一个函数进行进一步的处理。你知道吗

我尝试了以下方法:

print "My Addy:",bytes(row[0][:32])
print '{0}'.format(row[0][:32]) 
...

它们都产生相同的结果。。。你知道吗

求你了

首先,有人能告诉我第一个结果是什么格式的吗?我认为它的字节格式,但不确定。你知道吗

其次,如何将数据库中存储的文本转换为

任何帮助,我都会永远感激。你知道吗

提前谢谢

埃德


Tags: 字符串数据库格式rowsrowprintx00cur
1条回答
网友
1楼 · 发布于 2024-06-28 12:21:38

问题是没有在数据库中正确存储值。您想存储一个字节序列,但您存储的是这些字节的转义版本。你知道吗

在编程语言中输入字符串文字时,可以使用源代码中的转义码来访问非打印字符。这就是你在第一个例子中所做的:

testString = "\x00\x13\xA2\x00\x40\xAA\x15\x47"
print 'Test String:',testString 

但这是Python解释器在读取并执行程序时所做的处理。你知道吗

将数据库列更改为二进制blob而不是字符串,然后返回到用于在SQLite3中存储字节的代码,让它存储实际字节('ABC',3个字节),而不是转义字符串('\x41\x42\x43',12个字符)。你知道吗

如果您确实需要将转义字符串存储在SQLite3中并在运行时转换它,那么您可以使用ast.literal_eval()将其作为字符串文本进行计算。你知道吗

相关问题 更多 >