[英]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(以及幾乎任何其他編程語言)中,數字存儲為二進制整數。 因此,“前導零”的概念毫無意義:對於計算機, 123
和000123
將完全相同地存儲。 (事實上,數學家會說那些代表完全相同的值。)
如果需要前導零,則應將值存儲為字符串。 只需刪除numb
功能中的int
調用即可。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.