ich habe ein "c_byte" bei dem ich die Endianess toggeln möchte.
Code: Alles auswählen
from ctypes import *
a = c_ubyte(0xC0) #a=1100 0000
b = swap(a) #b=0000 0011
Code: Alles auswählen
from ctypes import *
a = c_ubyte(0xC0) #a=1100 0000
b = swap(a) #b=0000 0011
Code: Alles auswählen
b = (a << 4 & 0xf0) | (a >> 4 & 0x0f)
Code: Alles auswählen
c_data = c_ubyte(0x20) #create c_byte
print(c_data, type(c_data))
i_data = c_data.value #convert to int
print(i_data, type(i_data))
bin = bin(i_data) #get binary representation
print(bin)
rev_bin = bin[-1:1:-1] #swap
print(rev_bin)
rev_bin = rev_bin + (8 - len(rev_bin))*'0' #fill-up with zeros
print(rev_bin)
c_data = c_ubyte(int(rev_bin,2)) #back to c_ubyte
print(c_data, type(c_data))
Code: Alles auswählen
c_data = c_ubyte(int(f"{c_data.value:08b}"[::-1], 2))
Code: Alles auswählen
spi = spidev.SpiDev()
spi.open(0, 0)
spi.lsbfirst = True