python / python/cpython

Please add documentation of the bitfield ordering for ctypes.Structure types

Aberta
#118,434 1 comentário 0 reações 0 responsáveis Ver no GitHub

Ninguém assumiu esta issue ainda.

docs topic-ctypes
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

Abrir o guia de contribuição

Primeiros passos

  1. Leia a issue inteira e depois o guia de contribuição do projeto.
  2. Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
  3. Faça um fork do repositório e trabalhe em uma branch.
  4. 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

Receba novas issues na sua caixa de entrada

Um resumo curto de issues do GitHub para quem está começando.