[Python] R: Registri modbus
Alessandro T.
tagliare3 a yahoo.it
Gio 17 Feb 2022 17:32:13 CET
On 17/02/22 07:34, Vinny Mautone wrote:
> Studiando un pò sono riuscito a scrivere questa funzione che fa il suo
> dovere, ma volevo capire se era la strada giusta o si potesse
> velocizzare un po, comunque questa è la funzione
>
> def reg_to_string(reg):
> s = ''
> for ele in reg:
> if ele:
> b = format(ele, '016b') # converto il registro da decimale in binario
> ch = chr(int(b[:8], 2)) # prendo i primi 8 bit e li converto in char
> if ch.isalnum(): # controllo che sia un numero o una lettera
> s += ch # lo aggiungo alla stringa
> ch = chr(int(b[8:], 2)) # faccio la stessa cosa con gli altri 8 bit
> if ch.isalnum():
> s += ch
> return s # ritorno la stringa
>
> Grazie per eventuali correzioni o miglioramenti
>
reg = [21070, 12601, 12340, 12593, 12593, 13312]
versione compatta:
s = ''.join(c for r in reg for i in (1,0) if (c:=chr(r >> 8*i &
0xff)).isalnum())
versione estesa:
s = []
for r in reg:
for i in (1,0):
c = chr(r >> 8*i & 0xff)
if c.isalnum():
s.append(c)
s = ''.join(s)
--
Alessandro T.
R: Perché leggiamo dall'alto al basso e da sinistra a destra.
D: Perché dovrei iniziare la risposta all'e-mail dopo il testo citato?
Maggiori informazioni sulla lista
Python