我希望通过左移str
数据来显示数组数据。我写的代码,它的工作部分。代码如下:
这在Python中是可能的吗输出。提供解决方案
response = '62 D9 57 00 00 25 27 00 00 28 77 00 02 4D 27 11 22 33 44'
data = response.split()
index = 3
for i in range(0,3):
TempMSBData = (data[index])
print '1st Byte:' + ' ' + TempMSBData
index = index + 1
MSBData = (data[index])
print '2nd Byte:' + ' ' + MSBData
index = index + 1
TempLSBData = (data[index])
print '3rd Byte:' + ' '+ TempLSBData
index = index + 1
LSBData = (data[index])
print '4th Byte:' + ' ' +LSBData
index = index + 1
DataResponse =(( int(TempMSBData) << 24)|( int(MSBData) << 16) | ( int(TempLSBData) <<8)| int(LSBData))
print 'Data_Ary_[{}] = {}'.format(i, DataResponse)
我用Error
得到如下输出
1st Byte: 00
2nd Byte: 00
3rd Byte: 25
4th Byte: 27
Data_Ary_[0] = 6427
1st Byte: 00
2nd Byte: 00
3rd Byte: 28
4th Byte: 77
Data_Ary_[1] = 7245
1st Byte: 00
2nd Byte: 02
3rd Byte: 4D
4th Byte: 27
Error is : DataResponse =(( int(TempMSBData) << 24)|( int(MSBData) << 16) | ( int(TempLSBData) <<8)| int(LSBData))
ValueError: invalid literal for int() with base 10: '4D'
我期望输出如下:
1st Byte: 00
2nd Byte: 00
3rd Byte: 25
4th Byte: 27
Data_Ary_[0] = 2527
1st Byte: 00
2nd Byte: 00
3rd Byte: 28
4th Byte: 77
Data_Ary_[1] = 2877
1st Byte: 00
2nd Byte: 02
3rd Byte: 4D
4th Byte: 27
Data_Ary_[2] = 024D27
1st Byte: 11
2nd Byte: 22
3rd Byte: 33
4th Byte: 44
Data_Ary_[3] = 11223344
如果我理解正确的话,你需要一个十六进制部分的长字符串,把它们分成4组,然后打印十六进制值。你知道吗
您可以使用一个常见的python习惯用法来使用
zip()
将split()
分块:x
将以4块的形式迭代数据,例如,第一次循环x = ('00', '00', '25', '27')
。您可以解包到您的变量(但我不确定这是否有帮助):如果您不需要数值,您可以在字符串中完成这一切,只需
lstrip()
关闭0
:但是,如果您希望它是数字的,那么您可以简单地
join
部分并转换为int(n, 16)
基16。但是,打印出来时需要format()
到十六进制x
:您正在获取看到的值,因为您正在以十进制打印:
但是,您的计算不正确,您需要
int(x, 16)
。你知道吗要做到这一切,你可以做:
相关问题 更多 >
编程相关推荐