我正在使用帶有可變數目參數的struct.pack方法。我想將字符串轉換爲字節。如果字符串很短(例如'name'),我可以這樣做:將大量參數傳遞給struct.pack
bytes = struct.pack('4c','n','a','m','e')
但是當我的字符串長度爲80個字符時怎麼辦?
我試過了格式字符串's',而不是'80c'的struct.pack,但結果與上面的調用不一樣。
我正在使用帶有可變數目參數的struct.pack方法。我想將字符串轉換爲字節。如果字符串很短(例如'name'),我可以這樣做:將大量參數傳遞給struct.pack
bytes = struct.pack('4c','n','a','m','e')
但是當我的字符串長度爲80個字符時怎麼辦?
我試過了格式字符串's',而不是'80c'的struct.pack,但結果與上面的調用不一樣。
使用 「80」,而不僅僅是 「S」。輸入是單個字符串,而不是一系列字符。即
bytes = struct.pack('4s','name')
請注意,如果您指定的長度比輸入的大,輸出將是空填充。
這沒有多大意義。字符串在python 2.x中已經是字節了;所以你可以這樣做:
my_string = 'I am some big string'
my_bytes = my_string
在python 3上,默認情況下字符串是unicode對象。要獲取字節,您必須對字符串進行編碼。
my_bytes = my_string.encode('utf-8')
如果真的要使用struct.pack
,你會使用* syntax
爲described in the tutorial:
my_bytes = struct.pack('20c', *my_string)
或
my_bytes = struct.pack('20s', my_string)
大概最終會有結構格式的其他字段(即與結果無關的其他字段)。如果沒有,是的,這是毫無意義的:) – axw 2010-12-22 10:44:10
@axw:那麼OP應該在問題中這樣說。 – nosklo 2010-12-22 10:44:45