一般来说,我对十六进制还不太熟悉,我有一个应用程序需要我拆分一个十六进制数。例如,给定数字0x607F,我需要返回高(0x60)或低(0x7F)字节。
这是五月的实现,虽然感觉有点像克隆。在python中是否有更标准的方法来实现这一点?
def byte(integer,highlow):
assert highlow=='high' or highlow=='low'
if highlow=='high':
return hex(int(bin(integer)[:-8],2))
if highlow=='low':
return hex(int(bin(integer)[-8:],2))
这将以元组的形式返回高字节和低字节:
例如:
顺便说一句,根据您需要字节的用途和整数的来源,可能有更好的方法来满足您的需要。
再加上Ned的回答是非常正确的,struct是提取字节的强大工具。
在本例中,“<;”告诉pack将输入解释为little-endian,“H”表示期望2字节的数字。Struct生成一个bytes对象(在Python 3上),然后可以将其转换为元组,以满足%x打印十六进制的字符串格式参数。
Python 2.7稍微麻烦一些,只是因为struct.pack将信息放在一个字符串中,该字符串必须是split into its characters:
如果你真的在做一件像这个例子一样简单的事情,那可能是过分了。如果你正在从一个微控制器中观察到更多的值或不同长度的数字,或者用C或C++交换数据,考虑使用Stutt使字节更容易发生扭曲。
收益率
相关问题 更多 >
编程相关推荐