![](/img/trans.png)
[英]How do you convert a char * with 0-value bytes into a python string?
[英]How do you convert string to bytes
我正在使用python v2.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
我無法弄清楚如何將數據庫存儲的字符串轉換為字節字符串(如果是的話),如第一段代碼一樣。 我實際上需要它以這種格式加載到變量中,以便可以將其傳遞給函數進行進一步處理。
我嘗試了以下方法:
print "My Addy:",bytes(row[0][:32])
print '{0}'.format(row[0][:32])
...
它們都產生相同的結果...
請
首先,誰能告訴我第一個結果的格式是什么? 我認為它的字節格式,但不確定。
第二,如何將數據庫存儲的文本轉換為
任何幫助,我將永遠感激不已。
提前致謝,
埃德
問題是您沒有將值正確存儲在數據庫中。 您想存儲一個字節序列,但是要存儲這些字節的轉義版本。
在將字符串文字輸入到編程語言中時,可以在源代碼中使用轉義碼來訪問非打印字符。 這就是您在第一個示例中所做的:
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()
將其評估為字符串文字。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.