Python將byte數組轉換為int

nc6433 9年前發布 | 7K 次閱讀 Python WebSocket CshBBrain;

代碼

import struct
import ctypes

def test_struct(buf, offset): return struct.unpack_from("I", buf, offset)[0]

def test_ctypes(buf, offset): return ctypes.c_uint32.from_buffer(buf, offset).value

def test_multi(buf, offset): return buf[offset] + (buf[offset+1] << 8) + (buf[offset+2] << 16) +(buf[offset+3] << 24)

buf_w = bytearray(5) buf_w[1] = 1 buf_r = buffer(buf_w)

if name == 'main': import timeit t1 = timeit.Timer("test_struct(buf_r, 1)", "from main import test_struct, buf_r") t2 = timeit.Timer("test_ctypes(buf_w, 1)", "from main import test_ctypes, buf_w") t3 = timeit.Timer("test_multi(buf_w, 1)", "from main import test_multi, buf_w") print t1.timeit(number=1000) print t2.timeit(number=1000) print t3.timeit(number=1000)</pre>

結果

number = 10000
0.0081958770752
0.012549161911
0.0112121105194

number = 1000 0.00087308883667 0.00125789642334 0.00110197067261

number = 100 0.0000917911529541 # 9.17911529541e-05 0.000133991241455 0.00011420249939

number = 10 1.69277191162e-05 2.19345092773e-05 1.69277191162e-05

number = 1 1.00135803223e-05 1.00135803223e-05 5.96046447754e-06 </pre>

 本文由用戶 nc6433 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!