2017-04-13 51 views
1

我使用蟒操作数据而显示为预期的格式的Python如何按预期格式

目前我使用的空数组追加基于所述数据类型的处理的数据(U8和U16)

显示结果

对于U8的数据类型:Value = 255

我得到的结果是:request = 2F f4 0d ['ff', 0, 0, 0]

我期待的结果应该通过限制除字节是显示:request = 2F f4 0d ff

对于U16的数据类型:Value = 260

我得到的结果:request = 2F f4 0c ['04', '10', 0, 0]

我期待的结果应该通过限制除字节是显示:request = 2F f4 0d 04 10

的代码如下:

def EventOnBtnIOControl(event): 

#Called the Force Numeric Item to open GUI 
ForceNumericItem() 

global Value 
global CMD 

top.wait_window(Subtop) 
request = '2F'+ ' '+'f4'+' '+'0d'+' '+ str(CMD) 
print request 
return 

我的图形用户界面功能:

def ForceNumericItem(): 
Subtop.bind('<Return>', EventForceValue) 
return 

点击进入

def EventForceValue(event): 
global Value 
Value = SubMenuTakeStrInt() 
print SMIScale 
fScaledAndOffset = ((Value - SMIOffset)/SMIScale) 
print fScaledAndOffset 

if (fScaledAndOffset >= 0.0): 
    iScaledAndOffset = math.trunc(fScaledAndOffset + 0.5) 
else: 
    iScaledAndOffset = math.trunc(fScaledAndOffset - 0.5) 
print iScaledAndOffset 
global CMD 

CMD = [0,0,0,0] 

if(SMIType == 'u8' or SMIType == 's8'): 
    CMD[0] = hex(iScaledAndOffset & 0xff)[2:].zfill(2) 
    CMDlimit = 1 
    print CMD 

elif (SMIType == 'u16' or SMIType == 's16'): 
    CMD[0] = hex((iScaledAndOffset >> 8) & 0xff)[2:].zfill(2) 
    CMD[1] = hex(iScaledAndOffset & 0xff)[2:].zfill(2) 
    CMDlimit = 2 
    print CMD 
elif (SMIType == 'u24'): 
    CMD[0] = hex((iScaledAndOffset >> 16) & 0xff)[2:].zfill(2) 
    CMD[2] = hex((iScaledAndOffset >> 8) & 0xff)[2:].zfill(2) 
    CMD[3] = hex(iScaledAndOffset & 0xff)[2:].zfill(2) 
    print CMD 
elif (SMIType == 'u32'): 
    CMD[0] = hex((iScaledAndOffset >> 24) & 0xff)[2:].zfill(2) 
    CMD[1] = hex((iScaledAndOffset >> 16) & 0xff)[2:].zfill(2) 
    CMD[2] = hex((iScaledAndOffset >> 8) & 0xff)[2:].zfill(2) 
    CMD[3] = hex(iScaledAndOffset & 0xff)[2:].zfill(2) 
    print CMD 
else: 
    printf( "Invalid Numeric Data by ID Type", Red) 
Subtop.destroy() 
top.deiconify() 

return 

回答

0

CMD

CMD = [0,0,0,0] 

您使用

request = '2F'+ ' '+'f4'+' '+'0d'+' '+ str(CMD) 
print request 

,可能str是你的问题,因为这将列表转换成根显示它列表的字符串表示。也许你想

["{} ".format(i) for i in CMD] 

,而不是

str(CMD) 

甚至

["{} ".format(i) for i in CMD if i != 0] 

以上甚至

" ".join([i for i in CMD if i != 0])