Please add documentation of the bitfield ordering for ctypes.Structure types
Ninguém assumiu esta issue ainda.
- Linguagem predominante
- Python
- Estrelas
- 77.2k
- Forks
- 36k
- Métricas de merge de PRs
- Métricas de PR pendentes
Descrição
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
)
Guia de contribuição
Primeiros passos
- Leia a issue inteira e depois o guia de contribuição do projeto.
- Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
- Faça um fork do repositório e trabalhe em uma branch.
- Abra um pull request que referencie o número da issue.
Direção de pesquisa
Comece pela documentação de ctypes para Structure, BigEndianStructure e LittleEndianStructure, usando os exemplos de campos de bits fornecidos como os casos a serem explicados. Determine e documente a ordem de definição para estruturas little-endian, big-endian e nativas, incluindo o comportamento dependente da arquitetura, e verifique se o texto resultante é inequívoco.
Escrita pelo modelo de indexação a partir do texto da issue.
Avaliação
- Stack de tecnologia
- python
- Domínio
- documentation
- Tipo de issue
- Documentação
- Dificuldade
- 3/5
- Tempo estimado
- 1-2 dias
- Status de atividade
- Estagnada
- Clareza
- Razoavelmente clara
- Facilidade para iniciantes
- 38/100