Dla interfejsu GUI programu TKIN należy odczytać adres szesnastkowy w postaci "0x00", aby ustawić adres I2C. Sposób Jestem obecnie robi to poprzez czytanie wejście jako ciąg, konwersja ciąg do liczby całkowitej, a następnie przekształcenie tego całkowitą do rzeczywistej wartości Hex jak pokazano w kodzie częściowej poniżej:Konwertuj liczbę całkowitą na 2-bajtową wartość heksadecymalną w języku Python
inicjalizacji GUI:
self.I2CAddress=StringVar()
self.I2CAddress.set("0x00") #Sets Default value of '0x00'
Label(frame, text="Address: ").grid(row=5, column=4)
Entry(frame, textvariable=self.I2CAddress).grid(row=5, column=5)
Następnie wewnątrz funkcji:
addr = self.I2CAddress.get()
addrint = int(addr, 16)
addrhex = hex(addrint)
działa to dla większości wartości, ale moim problemem jest to, że jeśli wprowadzić małą wartość Hex ciąg takie jak „0x01”, konwertuje do prawidłowego całkowitą 1, ale następnie jest konwertowany na wartość szesnastkową 0x1 zamiast 0x01.
Jestem EE i mam bardzo ograniczone doświadczenie w programowaniu, więc każda pomoc jest bardzo ceniona.
Dziękujemy! Pracowałam jak urok, naprawdę to doceniam. –
Odpowiedziałeś tak szybko, że muszę poczekać kilka minut, zanim mi pozwoli, ale absolutnie będę –
Możesz po prostu użyć '{: # 02x}' zamiast jawnego '0x'. '#' Doda "standardowy przedrostek", który dla liczb szesnastkowych jest "0x". (Działa to również w ten sam sposób z% -formatting i C 'printf' i POSIX wiersza polecenia' printf' itp) – abarnert