目前我正在处理这样的十六进制数据流:
FIX230000010056A898
FIX230000020067A898
FIX230000030067A898
...
等等,我是从微控制器输出得到的。但不知何故,如果有错误,数据会被移位,因此数据流变得像:
00010067A898FIX2300
00020067A898FIX2300
00030067A898FIX2300
当我尝试解码数据时遇到了麻烦。我必须手动安排,以便FIX2300
字符再次出现在数据的开头,但这太麻烦了。所以,我想在python中编写程序......但遗憾的是我不知道。有没有人,谁知道这件事?非常感谢!
答案 0 :(得分:1)
这样的东西?
import binascii
myStr = "00010067A898FIX2300"
#or
myHex = b'30303031303036374138393846495832333030'
myStr2 = binascii.unhexlify(myHex).decode('utf8')
# NOTE: myStr2 = myStr
# convert stream data to string
myStr3 = myStr[-7:]+myStr[:-7] # or myStr2[-7:]+myStr2[:-7]
#convert stream data back to hex, if needed
myHex2 = binascii.hexlify(myStr.encode('utf8'))
您也可以使用'ascii'编解码器代替'utf8'。