簡體   English   中英

如何將字符串轉換為字節

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM