2017-01-21 51 views
0

我目前正在嘗試修復我正在開發的包中的一個錯誤。這個問題似乎是拋出錯誤的struct.pack功能:「s」的struct - 參數必須是字節對象,但已經是字節對象

struct.error: argument for 's' must be a bytes object 

我試圖使用規定的其他SO回答頁面這個錯誤的答案,但似乎無法得到任何工作,並且錯誤仍然存​​在。

下面是我一直在處理的輸出由複製錯誤的包中輸入一個簡化版本:

import struct 

second_arg = b'LASF_Projection\x00' 

print(type(second_arg)) 
struct.pack("<ssssssssssssssss", *second_arg) 

這將導致輸出:

<class 'bytes'> 
Traceback (most recent call last): 
    File "C:/pyfor/anothersandbox.py", line 7, in <module> 
    struct.pack(b"<ssssssssssssssss", *second_arg) 
struct.error: argument for 's' must be a bytes object 

我懷疑當解壓時,* second_arg不再是字節格式,而是拋出錯誤。這個懷疑是否正確,如果是的話,是否有可能將second_arg的解壓縮部分轉換爲字節格式?

+1

當你解壓'bytes'時,你得到'int's,和迭代'bytes'時一樣。 – ShadowRanger

+0

你對這些數據有什麼期望的結果? 'pack(「<16s」,second_arg)''但是它給出了相同的'b'LASF_Projection \ x00'' – furas

回答

0

您的懷疑是正確的。一個字節是一個範圍(256)內的整數序列。在3.6中:

>>> [*b'LASF_Projection\x00'] 
[76, 65, 83, 70, 95, 80, 114, 111, 106, 101, 99, 116, 105, 111, 110, 0] 

這些整數是你所傳遞的。

相關問題