Pergunta

Estou usando o editor de mapas lado a lado para fazer mapas 2D para fazer um jogo com o pyglet.Os blocos são numerados e salvos em um arquivo .tmx.Os números dos blocos começam em 1 e continuam aumentando, mas quando você vira um bloco, esse número do bloco é alterado bit a bit, para que, ao analisar os dados, você saiba como invertê-los.O documento explica como dividi-lo [aqui] (https://github.com/bjorn/tiled/wiki/TMX-Map-Format#data) sob a inversão dos ladrilhos.Não tenho ideia por onde começar, nunca usei bit a bit.Eu olhei para cima bit -se para Python e li sobre & | << >> Os operadores bit -bit e brincaram com eles no intérprete, mas ainda não entendo como quebrar os números de ladrilhos para obter os dados.Um dos números que tenho é 2684354578 alguém pode me mostrar como fazer isso?

Foi útil?

Solução

Os números têm 32 bits de largura.Os 3 bits superiores números 31, 30 e 29 identificam as informações de inversão.

Você pode forçar esses 3 bits a zero pela expressão

result = number & 0x1FFFFFFF

O prefixo 0x significa que é um número hexadecimal.Cada dígito representa 4 bits usando os valores de 0 a 9 e A a F.O número é, portanto, 3 zeros seguidos de 29 unidades.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top