2012-10-10 41 views
1

開箱我想收拾整數作爲在Python字節並解壓縮在C所以在我的Python代碼我有類似在Python包裝和用C

testlib = ctypes.CDLL('/something.so') 
testlib.process(repr(pack('B',10))) 

其中包10字節和在我的C代碼中調用函數「process」。

我需要在我的C代碼中解壓縮這些打包的數據嗎?也就是說,我需要做什麼才能從給定的打包數據中得到10。

+2

爲什麼'repr'?這將在您的字節周圍添加引號,我懷疑您需要這樣做。 –

+1

'process'的C函數原型是什麼樣的?你可以改變它嗎?如果是這樣,爲什麼不讓它取整數並完全跳過整個字節的包裝呢? –

+0

我可以更改C代碼,但代碼的目的是解壓縮包裝在python中的東西,因此完全跳過包裝不是一種選擇。 – shoopdelang

回答

0

假設您有10個字節的字符串包含10個整數,只需複製數據。

char packed_data[10]; 
int unpacked[10]; 

int i; 
for(i = 0; i < 10; ++i) 
    unpacked[i] = packed_data[i]; 

...或使用memcpy

在另一方面,如果你使用4個字節包裝時PR INT,你可以在C拆分字符的字符串並在其上使用atoi。你如何將數據從Python交換到C?

+0

我實際上在做一些像testlib.process(repr(pack('B',8))),其中repr(pack('B',8))是一個字符串'\ x08'。不知道這是否是正確/最好的方式。 – shoopdelang