簡體   English   中英

如何從列表Python中的項目組成的整數中獲取前導零

[英]how to get Leading Zeros in integer composed from items on a list Python

我正在嘗試創建一個由serval modbus寄存器構造的六位數字。 我不知道modbus寄存器如何工作,但能夠將某些數字映射到十進制值。

示例

'12336': '00', 
'12592': '01', 
'12848': '02', 
'13104': '03',
.
.
.
'14649': '99'

我創建了一個字典,其中包含從00到99的完整數字列表,我開始閱讀3個holdng寄存器並迭代它們並創建一個空列表,該列表將填充對應於字典中的鍵:值對的值然后我加入它們並轉換為整數,希望得到6位數字。 它只有在我的號碼上沒有前導零時才有效,但如果我確實得到前導零,那么我的號碼會減少到那個有效數字開始的位置。

我的代碼

NUMBERS  = {
    '12336': '00', '12592': '01', '12848': '02', '13104': '03', '13360': '04', '13616': '05', '13872': '06', '14128': '07', '14384': '08', '14640': '09', '12337': '10',

    }




def scanned_code():
    code = client.read_holding_registers(1, 3, unit=0)
    r = code.registers
    print(r)
    value = []

    for i in r :
        value.append(NUMBERS[str(i)])
    return value

def numb(lista):
    print(lista)
    res = int("".join(map(str, lista)))
    return res



scan_job = numb(scanned_code())
print(scan_job)

假設我有3個保持寄存器,其值如下: 12336,13360,14128我想生成這個數字000407 相反,我得到407

執行腳本時在終端中獲得的實際值

[12592, 13360, 14128]
['01', '04', '07']
10407

[12336, 13360, 14128]
['00', '04', '07']
407

在Python(以及幾乎任何其他編程語言)中,數字存儲為二進制整數。 因此,“前導零”的概念毫無意義:對於計算機, 123000123將完全相同地存儲。 (事實上​​,數學家會說那些代表完全相同的值。)

如果需要前導零,則應將值存儲為字符串。 只需刪除numb功能中的int調用即可。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM