Please add documentation of the bitfield ordering for ctypes.Structure types
Dieses Issue hat noch niemand übernommen.
- Vorherrschende Sprache
- Python
- Sterne
- 77.2k
- Forks
- 36k
- PR-Merge-Kennzahlen
- PR-Kennzahlen ausstehend
Beschreibung
Documentation
The current documentation for ctypes bit fields is very limited and doesn't cover the definition order. AFAICT this is:
Little endian - LSB first -> MSB last
Big endian - MSB first -> LSB last
Native - ??? This is LSB first -> MSB last on x86 but is that just because it's a little endian architecture?
For example:
class BigOnes(BigEndianStructure):
_pack_ = 1
_fields_ = (
("bit_0", c_uint16, 1), # MSBit
("bit_1", c_uint16, 1),
("bit_2", c_uint16, 1),
("bit_3", c_uint16, 1),
("nibble_1", c_uint16, 4),
("nibble_2", c_uint16, 4),
("nibble_3", c_uint16, 4), # LSBit
("byte_3", c_uint16, 8), # MSByte
("byte_4", c_uint16, 8), # LSByte
)
Versus:
class LittleOnes(LittleEndianStructure):
_pack_ = 1
_fields_ = (
("bit_0", c_uint16, 1), # LSBit
("bit_1", c_uint16, 1),
("bit_2", c_uint16, 1),
("bit_3", c_uint16, 1),
("nibble_1", c_uint16, 4),
("nibble_2", c_uint16, 4),
("nibble_3", c_uint16, 4), # MSBit
("byte_3", c_uint16, 8), # LSByte
("byte_4", c_uint16, 8), # MSByte
)
Beitragsleitfaden
Erste Schritte
- Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
- Forke das Repository und arbeite in einem Branch.
- Öffne einen Pull Request, der die Issue-Nummer nennt.
Rechercherichtung
Beginne mit der ctypes-Dokumentation zu Structure, BigEndianStructure und LittleEndianStructure und verwende die bereitgestellten Bitfeldbeispiele als die zu erklärenden Fälle. Ermittle und dokumentiere die Definitionsreihenfolge für Little-Endian-, Big-Endian- und native Strukturen, einschließlich des architekturabhängigen Verhaltens, und überprüfe, dass der resultierende Text eindeutig ist.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- python
- Bereich
- documentation
- Issue-Typ
- Dokumentation
- Schwierigkeit
- 3/5
- Geschätzter Aufwand
- 1-2 Tage
- Aktivitätsstatus
- Veraltet
- Klarheit
- Größtenteils klar
- Anfängerfreundlichkeit
- 38/100