Python将byte数组转换为int
- 作者: 雯雯的幸福路
- 来源: 51数据库
- 2022-08-12
代码
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)
结果
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
推荐阅读
热点文章
Discord.py(重写)on_member_update 无法正常工作
0
Discord.py 在 vc 中获取用户分钟数
0
discord.py 重写 |为我的命令出错
0
Discord.py rewrite 如何 DM 命令?
0
播放音频时,最后一部分被切断.如何解决这个问题?(discord.py)
0
在消息删除消息 Discord.py
0
如何使 discord.py 机器人私人/直接消息不是作者的人?
0
(Discord.py) 如何获取整个嵌入内容?
0
Discord bot 尽管获得了许可,但不能提及所有人
0
Discord.py discord.NotFound 异常
0
