7.1. Struct 8212 Interprete bytes como dados binários compactados Este módulo executa conversões entre valores de Python e estruturas C representadas como objetos de bytes Python. Isso pode ser usado no gerenciamento de dados binários armazenados em arquivos ou de conexões de rede, entre outras fontes. Ele usa Format Strings como descrições compactas do layout das estruturas C e a conversão pretendida para os valores de Python. Por padrão, o resultado da embalagem de uma determinada estrutura C inclui bytes de bloco para manter o alinhamento adequado para os tipos C envolvidos de forma semelhante, o alinhamento é levado em consideração ao desempacotar. Esse comportamento é escolhido para que os bytes de uma estrutura compactada correspondam exatamente ao layout em memória da estrutura C correspondente. Para lidar com formatos de dados independentes da plataforma ou omitir bytes de almofadas implícitas, use tamanho e alinhamento padrão em vez de tamanho e alinhamento nativos: veja Ordem de bytes, tamanho e alinhamento para detalhes. Várias funções struct (e métodos de Struct) tomam um argumento de buffer. Isso se refere a objetos que implementam o protocolo Buffer e fornecem um buffer legível ou legível. Os tipos mais comuns utilizados para esse efeito são bytes e bytearray. Mas muitos outros tipos que podem ser vistos como uma série de bytes implementam o protocolo do buffer, de modo que eles podem ser preenchidos sem cópia adicional de um objeto bytes. 7.1.1. Funções e Exceções O módulo define a seguinte exceção e funções: struct de exceção. Erro Exceção levantada em várias ocasiões argumento é uma string descrevendo o que está errado. Retornar um objeto bytes contendo os valores v1. V2. Embalado de acordo com o formato string fmt. Os argumentos devem corresponder exatamente aos valores exigidos pelo formato. Empacote os valores v1. V2. De acordo com a string de formato fmt e escreva os bytes compactados no buffer tampão gravável começando no deslocamento da posição. Observe que o deslocamento é um argumento necessário. Desembalar do buffer buffer (presumivelmente embalado por pacote (fmt.)) De acordo com a string de formato fmt. O resultado é uma tupla, mesmo que contenha exatamente um item. O tamanho do buffer8217s em bytes deve corresponder ao tamanho exigido pelo formato, conforme refletido pelo calcsize (). Desembalar do buffer a partir do deslocamento da posição. De acordo com o formato string fmt. O resultado é uma tupla, mesmo que contenha exatamente um item. O tamanho do buffer8217s em bytes, menos o deslocamento. Deve ser pelo menos o tamanho exigido pelo formato, conforme refletido pelo calcsize (). Descompactar de forma interativa do buffer buffer de acordo com a string de formato fmt. Esta função retorna um iterador que lê partes iguais de tamanho do buffer até que todos os seus conteúdos tenham sido consumidos. O tamanho do buffer8217s em bytes deve ser um múltiplo do tamanho exigido pelo formato, conforme refletido pelo calcsize (). Cada iteração produz uma tupla conforme especificado pela string do formato. Novo na versão 3.4. Retorna o tamanho da estrutura (e, portanto, do objeto bytes produzido pelo pacote (fmt.)) Correspondente ao formato fmt da seqüência de caracteres. 7.1.2. Formato de strings As strings de formato são o mecanismo usado para especificar o layout esperado ao empacotar e descompactar dados. Eles são criados a partir do formato Personagens. Que especificam o tipo de dados que estão sendo empacotados. Além disso, existem caracteres especiais para controlar a ordem, tamanho e alinhamento de bytes. 7.1.2.1. Ordem, tamanho e alinhamento de bytes Por padrão, os tipos C são representados no formato nativo do machine8217s e na ordem do byte, e adequadamente alinhados por bytes do pad ignorando, se necessário (de acordo com as regras usadas pelo compilador C). Alternativamente, o primeiro caractere da seqüência de formato pode ser usado para indicar a ordem do byte, tamanho e alinhamento dos dados compactados, de acordo com a tabela a seguir: Se o primeiro caracter não for um desses, 64 será assumido. O pedido de bytes nativos é grande ou enigmático, dependendo do sistema host. Por exemplo, Intel x86 e AMD64 (x86-64) são pouco conhecidos Motorola 68000 e PowerPC G5 são grandes endiantes ARM e Intel Itanium recurso comutável (bi-endian). Use sys. byteorder para verificar a dependência do seu sistema. O tamanho e o alinhamento nativos são determinados usando a expressão sizeof do compiler8217s. Isso sempre é combinado com a ordem do byte nativo. O tamanho padrão depende apenas do caractere de formato, veja a tabela na seção Formatar caracteres. Observe a diferença entre 64 e. Ambos usam a ordem de bytes nativos, mas o tamanho eo alinhamento do último são padronizados. A forma está disponível para aquelas almas pobres que afirmam que não podem se lembrar se a ordem do byte de rede é grande ou enigmática. Não há como indicar a ordem de bytes não nativos (troca de bytes de força) use a escolha apropriada de lt ou gt. O preenchimento só é adicionado automaticamente entre os membros sucessivos da estrutura. Nenhum preenchimento é adicionado no início ou no final da estrutura codificada. Não é adicionado preenchimento ao usar tamanho e alinhamento não nativos, p. Ex. Com 8216lt8217, 8216gt8217, 82168217 e 82168217. Para alinhar o fim de uma estrutura com o requisito de alinhamento de um tipo específico, termine o formato com o código para esse tipo com uma repetição de zero. Veja exemplos. 7.1.2.2. Caracteres do formato Os caracteres do formato têm o seguinte significado, a conversão entre os valores de C e Python deve ser óbvia, dado os seus tipos. A coluna 8216Standard size8217 refere-se ao tamanho do valor embalado em bytes ao usar o tamanho padrão que é, quando a seqüência de formato começa com um de lt. Gt. Ou. Ao usar o tamanho nativo, o tamanho do valor embalado é dependente da plataforma. Alterado na versão 3.6: Adicionado suporte para o formato e. O código de conversão corresponde ao tipo Bool definido pelo C99. Se este tipo não estiver disponível, ele é simulado usando um char. No modo padrão, é sempre representado por um byte. Os códigos de conversão q e Q estão disponíveis apenas em modo nativo se o compilador da plataforma C suportar C longo. Ou, no Windows, int64. Eles estão sempre disponíveis em modos padrão. Ao tentar empacotar um número não inteiro usando qualquer um dos códigos de conversão inteira, se o não-inteiro tiver um método índice (), esse método será chamado para converter o argumento em um inteiro antes da embalagem. Alterado na versão 3.2: o uso do método index () para não inteiros é novo em 3.2. Os códigos de conversão N e N só estão disponíveis para o tamanho nativo (selecionado como padrão ou com o caractere de ordem de 64 bytes). Para o tamanho padrão, você pode usar qualquer um dos outros formatos inteiros para sua aplicação. Para a f. Os códigos de conversão d e e, a representação compactada usa o formato binário I32, binário ou binário 16 (para f. D ou e, respectivamente), independentemente do formato de ponto flutuante usado pela plataforma. O caractere de formato P só está disponível para o pedido de bytes nativos (selecionado como padrão ou com o caractere de ordem de 64 bytes). O caractere da ordem do byte escolhe usar o pedido de ordem pequena ou grande com base no sistema host. O módulo struct não interpreta isso como pedido nativo, portanto o formato P não está disponível. O tipo IEEE 754 binário16 8220half precision8221 foi introduzido na revisão de 2008 do padrão IEEE 754. Tem um bit de sinal, um expoente de 5 bits e uma precisão de 11 bits (com 10 bits explicitamente armazenados) e pode representar números entre aproximadamente 6.1e-05 e 6.5e04 com precisão total. Este tipo não é amplamente suportado pelos compiladores C: em uma máquina típica, um short não assinado pode ser usado para armazenamento, mas não para operações matemáticas. Veja a página de Wikipedia no formato de ponto flutuante de meia precisão para obter mais informações. Um caractere de formato pode ser precedido por uma contagem de repetição integral. Por exemplo, a seqüência de formato 4h significa exatamente o mesmo que hhhh. Caracteres de espaço em branco entre formatos são ignorados uma contagem e seu formato não deve conter espaços em branco embora. Para o caractere de formato s, a contagem é interpretada como o comprimento dos bytes, não uma contagem de repetição como para os outros caracteres de formato, por exemplo, 10s significa uma única seqüência de 10 bytes, enquanto 10c significa 10 caracteres. Se uma contagem não for dada, ele padrão é 1. Para a embalagem, a seqüência de caracteres é truncado ou preenchido com bytes nulos, conforme apropriado para ajustá-lo. Para desembalar, o objeto bytes resultante sempre possui exatamente o número especificado de bytes. Como caso especial, 0s significa uma única string vazia (enquanto 0c significa 0 caracteres). Ao empacotar um valor x usando um dos formatos inteiros (b. B. h. H. i. I. l. L. q. Q), se x estiver fora do intervalo válido para esse formato, então struct. error é gerado. Alterado na versão 3.1: no 3.0, alguns dos formatos inteiros foram envolvidos em valores fora do intervalo e aumentaram o DeprecationWarning em vez do struct. error. O caractere de formato p codifica uma seqüência 8220Pascal8221, que significa uma seqüência curta de comprimento variável armazenada em um número fixo de bytes. Dado pela contagem. O primeiro byte armazenado é o comprimento da string, ou 255, o que for menor. Os bytes da seqüência seguem. Se a string passada para o pacote () for muito longa (mais do que a contagem menos 1), somente a contagem principal-1 bytes da string está armazenada. Se a cadeia for mais curta que a contagem-1. É preenchido com bytes nulos, de modo que exatamente os bytes de contagem são usados. Observe que, para descompactar (). O caractere de formato p consome bytes de contagem, mas que a string retornada nunca pode conter mais de 255 bytes. Para o caractere de formato, o valor de retorno é Verdadeiro ou Falso. Ao empacotar, o valor de verdade do objeto de argumento é usado. 0 ou 1 na representação nativa ou padrão do bool serão empacotados, e qualquer valor diferente de zero será True ao descompactar. 7.1.2.3. Exemplos Todos os exemplos assumem uma ordem, tamanho e alinhamento de bytes nativos com uma máquina big-endian.7.3. Struct 8212 Interpretar strings como dados binários compactados Este módulo executa conversões entre valores Python e estruturas C representadas como cordas Python. Isso pode ser usado no gerenciamento de dados binários armazenados em arquivos ou de conexões de rede, entre outras fontes. Ele usa Format Strings como descrições compactas do layout das estruturas C e a conversão pretendida para os valores de Python. Por padrão, o resultado da embalagem de uma determinada estrutura C inclui bytes de bloco para manter o alinhamento adequado para os tipos C envolvidos de forma semelhante, o alinhamento é levado em consideração ao desempacotar. Esse comportamento é escolhido para que os bytes de uma estrutura compactada correspondam exatamente ao layout em memória da estrutura C correspondente. Para lidar com formatos de dados independentes da plataforma ou omitir bytes de almofadas implícitas, use tamanho e alinhamento padrão em vez de tamanho e alinhamento nativos: veja Ordem de bytes, tamanho e alinhamento para detalhes. 7.3.1. Funções e Exceções O módulo define a seguinte exceção e funções: struct de exceção. Erro Exceção levantada em várias ocasiões argumento é uma string descrevendo o que está errado. Retorna uma string contendo os valores v1, v2. Embalado de acordo com o formato fornecido. Os argumentos devem corresponder exatamente aos valores exigidos pelo formato. Empacote os valores v1, v2. De acordo com o formato fornecido, escreva os bytes compactados no buffer gravável começando no deslocamento. Observe que o deslocamento é um argumento necessário. Novo na versão 2.5. Desembale a corda (presumivelmente embalada por pacote (fmt.)) De acordo com o formato fornecido. O resultado é uma tupla, mesmo que contenha exatamente um item. A string deve conter exatamente a quantidade de dados exigida pelo formato (len (string) deve ser igual a calcsize (fmt)). Desembale o buffer de acordo com o formato fornecido. O resultado é uma tupla, mesmo que contenha exatamente um item. O buffer deve conter pelo menos a quantidade de dados exigida pelo formato (len (bufferoffset :) deve ser pelo menos calcsize (fmt)). Novo na versão 2.5. Retorna o tamanho da estrutura (e, portanto, da string) correspondente ao formato fornecido. 7.3.2. Formato de strings As strings de formato são o mecanismo usado para especificar o layout esperado ao empacotar e descompactar dados. Eles são criados a partir do formato Personagens. Que especificam o tipo de dados que estão sendo empacotados. Além disso, existem caracteres especiais para controlar a ordem, tamanho e alinhamento de bytes. 7.3.2.1 Ordem, tamanho e alinhamento de bytes Por padrão, os tipos C são representados no formato nativo do machine8217s e na ordem do byte, e adequadamente alinhados por bytes do pad ignorando, se necessário (de acordo com as regras usadas pelo compilador C). Alternativamente, o primeiro caractere da seqüência de formato pode ser usado para indicar a ordem do byte, tamanho e alinhamento dos dados compactados, de acordo com a tabela a seguir: Se o primeiro caracter não for um desses, 64 será assumido. O pedido de bytes nativos é grande ou enigmático, dependendo do sistema host. Por exemplo, Intel x86 e AMD64 (x86-64) são pouco conhecidos Motorola 68000 e PowerPC G5 são grandes endiantes ARM e Intel Itanium recurso comutável (bi-endian). Use sys. byteorder para verificar a dependência do seu sistema. O tamanho e o alinhamento nativos são determinados usando a expressão sizeof do compiler8217s. Isso sempre é combinado com a ordem do byte nativo. O tamanho padrão depende apenas do caractere de formato, veja a tabela na seção Formatar caracteres. Observe a diferença entre 64 e. Ambos usam a ordem de bytes nativos, mas o tamanho eo alinhamento do último são padronizados. A forma está disponível para aquelas almas pobres que afirmam que não podem se lembrar se a ordem do byte de rede é grande ou enigmática. Não há como indicar a ordem de bytes não nativos (troca de bytes de força) use a escolha apropriada de lt ou gt. O preenchimento só é adicionado automaticamente entre os membros sucessivos da estrutura. Nenhum preenchimento é adicionado no início ou no final da estrutura codificada. Não é adicionado preenchimento ao usar tamanho e alinhamento não nativos, p. Ex. Com 8216lt8217, 8216gt8217, 82168217 e 82168217. Para alinhar o fim de uma estrutura com o requisito de alinhamento de um tipo específico, termine o formato com o código para esse tipo com uma repetição de zero. Veja exemplos. 7.3.2.2. Caracteres do formato Os caracteres do formato têm o seguinte significado, a conversão entre os valores de C e Python deve ser óbvia, dado os seus tipos. A coluna 8216Standard size8217 refere-se ao tamanho do valor embalado em bytes ao usar o tamanho padrão que é, quando a seqüência de formato começa com um de lt. Gt. Ou. Ao usar o tamanho nativo, o tamanho do valor embalado é dependente da plataforma. O código de conversão corresponde ao tipo Bool definido pelo C99. Se este tipo não estiver disponível, ele é simulado usando um char. No modo padrão, é sempre representado por um byte. Novo na versão 2.6. Os códigos de conversão q e Q estão disponíveis apenas em modo nativo se o compilador da plataforma C suportar C longo. Ou, no Windows, int64. Eles estão sempre disponíveis em modos padrão. Novo na versão 2.2. Ao tentar empacotar um número não inteiro usando qualquer um dos códigos de conversão inteira, se o não-inteiro tiver um método índice (), esse método será chamado para converter o argumento em um inteiro antes da embalagem. Se nenhum método index () existe, ou o call to index () eleva TypeError. Então o método int () é tentado. No entanto, o uso de int () está obsoleto e aumentará DeprecationWarning. Alterado na versão 2.7: o uso do método index () para non-entergers é novo em 2.7. Alterado na versão 2.7: antes da versão 2.7, nem todos os códigos de conversão de números inteiros usariam o método int () para converter, e DeprecationWarning foi criado apenas para argumentos flutuantes. Para os códigos de conversão f e d, a representação compactada usa o formato binário binário do IEEE 754 (para f) ou binário64 (para d), independentemente do formato de ponto flutuante usado pela plataforma. O caractere de formato P só está disponível para o pedido de bytes nativos (selecionado como padrão ou com o caractere de ordem de 64 bytes). O caractere da ordem do byte escolhe usar o pedido de ordem pequena ou grande com base no sistema host. O módulo struct não interpreta isso como pedido nativo, portanto o formato P não está disponível. Um caractere de formato pode ser precedido por uma contagem de repetição integral. Por exemplo, a seqüência de formato 4h significa exatamente o mesmo que hhhh. Caracteres de espaço em branco entre formatos são ignorados uma contagem e seu formato não deve conter espaços em branco embora. Para o caractere de formato s, a contagem é interpretada como o tamanho da seqüência de caracteres, não uma contagem de repetição como para os outros caracteres de formato, por exemplo, 10s significa uma única seqüência de 10 bytes, enquanto 10c significa 10 caracteres. Se uma contagem não for dada, ele padrão é 1. Para a embalagem, a seqüência de caracteres é truncado ou preenchido com bytes nulos, conforme apropriado para ajustá-lo. Para descompactar, a seqüência resultante sempre possui exatamente o número especificado de bytes. Como caso especial, 0s significa uma única string vazia (enquanto 0c significa 0 caracteres). O caractere de formato p codifica uma seqüência 8220Pascal8221, que significa uma seqüência curta de comprimento variável armazenada em um número fixo de bytes. Dado pela contagem. O primeiro byte armazenado é o comprimento da string, ou 255, o que for menor. Os bytes da seqüência seguem. Se a string passada para o pacote () for muito longa (mais do que a contagem menos 1), somente a contagem principal-1 bytes da string está armazenada. Se a cadeia for mais curta que a contagem-1. É preenchido com bytes nulos, de modo que exatamente os bytes de contagem são usados. Observe que, para descompactar (). O caractere de formato p consome bytes de contagem, mas que a string retornada nunca pode conter mais de 255 caracteres. Para o caractere de formato P, o valor de retorno é um inteiro Python ou inteiro longo, dependendo do tamanho necessário para manter um ponteiro quando ele foi lançado para um tipo inteiro. Um ponteiro NULL sempre será retornado como o inteiro Python 0. Quando os valores do tamanho do ponteiro do empacotamento, o inteiro Python ou objetos inteiros longos podem ser usados. Por exemplo, os processadores Alpha e Merced usam valores de ponteiro de 64 bits, o que significa que um inteiro longo Python será usado para manter o ponteiro, outras plataformas usam ponteiros de 32 bits e usarão um inteiro Python. Para o caractere de formato, o valor de retorno é Verdadeiro ou Falso. Ao empacotar, o valor de verdade do objeto de argumento é usado. 0 ou 1 na representação nativa ou padrão do bool serão empacotados, e qualquer valor diferente de zero será True ao desempacotar. 7.3.2.3. Exemplos Todos os exemplos assumem uma ordem, tamanho e alinhamento de bytes nativos com uma máquina big-endian. Arquivo de listagem de mensagens 15 de junho de 2017, 05:29 Post 1 of 11 (5478 views) Olá, eu tenho procurado por 2 dias para Uma maneira de converter inteiro para o número binário 0-acolchoado, nada. Preciso obter números convertidos com um número definido de bits. Por exemplo, em 8 bits 2 00000010, escrevi o seguinte: ltcodegt usrbinenv python def int2binPadded (número, tamanho): o objetivo desta função é converter o número inteiro para o número binário 0-padded. Se tipo (número) int ou número lt 0: aumentar ValueError, deve ser um inteiro positivo se digitar (tamanho) int: aumentar ValueError, deve ser um número inteiro se o número gt (2size) -1: aumentar ValueError, o número é muito grande converter Int to bin b str (bin (número)) 2: se len (b) tamanho: b (tamanho-len (b)) 0b se nome principal: importar sys imprimir int2binPadded (int (sys. argv1), int (sys. Argv2)) ltcodegt Isso satisfaz minhas necessidades. No entanto, o que você pensa sobre isso. Obrigado por você observações, Re: inteiro para binário 0-acolchoado Em resposta a 15 de junho de 2017, 5:33 Post 2 de 11 (5399 visualizações) Am 15.06.2017 14:29, schrieb Olivier LEMAIRE: gt Olá, Eu tenho procurado por 2 dias para uma maneira de converter inteiro gt para o número binário 0-acolchoado, nada. Eu preciso obter números convertidos gt com um número definido de bits. Por exemplo, em 8 bits 2 00000010 Re: inteiro para binário 0-acolchoado Em resposta a 15 de junho de 2017, 5:48 da manhã Post 3 of 11 (5404 visitas) No Wed, 15 de junho de 2017 às 22:29, Olivier LEMAIRE Ltm. olivier. lemairegmailgt escreveu: gt b str (bin (número)) 2: gt se len (b) tamanho: gt b (size-len (b)) 0b Você não precisa do str () lá como bin () já Retorna um número. É uma simplificação relativamente trivial - embora isso torne o código mais enigmático: depois de digitar isso, eu vi o post de Daniels, o que é bastante melhor. Vá com aquela para minas de preenchimento zero mais geral, porém, você pode almoçar com outros tokens. Re: inteiro para binário 0-acolchoado Em resposta a 15 de junho de 2017, 5:54 da postagem 4 de 11 (5397 visualizações) Olivier LEMAIRE escreveu: gt Eu tenho procurado por 2 dias para uma maneira de converter inteiro para o número binário gt 0 - padded, nada. Eu preciso obter números convertidos com um número definido gt de bits. Por exemplo, em 8 bits 2 00000010 escrevi o seguinte: gt b str (bin (number)) 2: O resultado de bin () já é uma string, não é necessário aplicar str (). Gt se len (b) tamanho: gt b (tamanho-len (b)) 0b b. zfill (tamanho) pode fazer isso. Gt Embora, o que você pensa sobre isso. De outra maneira (requer Python 2.7): gtgtgt b. format (42, 10) 0000101010 Re: inteiro para binário 0-acolchoado Em resposta ao 15 de junho de 2017, 6:07 Post 5 de 11 (5400 visualizações) Obrigado a todos vocês. Então, finalmente, eu simplesmente posso escrever. Ltcodegt usrbinenv python def int2binPadded (número, tamanho): O objetivo desta função é converter o número inteiro para o número binário 0-padded. Se tipo (número) int ou número lt 0: aumentar ValueError, deve ser um inteiro positivo se digitar (tamanho) int: aumentar ValueError, deve ser um número inteiro se o número gt (2size) -1: aumentar ValueError, o número é muito grande converter Int to bin Re: inteiro para binário 0-padded Em resposta a 15 de junho de 2017, 6:13 Post 6 of 11 (5409 visitas) Em 06152017 07:33, Daniel Rentz escreveu: gt Am 15.06.2017 14:29 , Schrieb Olivier LEMAIRE: gtgt Olá, tenho procurado por 2 dias para uma maneira de converter gtgt inteiro para o número binário 0-acolchoado, nada. Eu preciso obter números convertidos gtgt com um número definido de bits. Por exemplo, em 8 bits 2 00000010 gt gt bin (2) 2:.zfill (8) Apenas para ter no segmento (embora o OP pareça estar usando 2.6 ou posterior), a função bin () parece ter sido adicionada em 2.6, o que é algo que eu desejei ter sido back-portado para 2.4 e 2.5, como eu já estive suficientemente codificado contra versões anteriores do Python para ter (re) escrito uma função bin () várias vezes. Ah, bem. integer ao binário 0-acolchoado Olá, eu tenho procurado por 2 dias para uma maneira de converter inteiro para o número binário 0-acolchoado, nada. Preciso obter números convertidos com um número definido de bits. Por exemplo, em 8 bits 2 00000010 escrevi o seguinte: ltcodegt usrbinenv python def int2binPadded (número, tamanho): quotquotquotO objetivo desta função é converter o número inteiro para o número binário 0-padded. quotquotquot se tipo (número) int ou número lt 0: raise ValueError, quotshould ser um integerquot positivo se type (size) int: raise ValueError, quotshould ser um número inteiro q número gt (2size) -1: raise ValueError, quotnumber é muito grande converso int para bin b str (bin (número )) 2: se len (b) tamanho: b (tamanho-len (b)) quot0quotb se nome quotmainquot: import sys print int2binPadded (int (sys. argv1), int (sys. argv2)) ltcodegt Isso satisfaz minhas necessidades. No entanto, o que você pensa sobre isso. Obrigado por suas observações, Abra esta postagem na tela de discussão Conteúdo do relatório como inapropriado Re: integer to binary 0-padded Am 15.06.2017 14:29, schrieb Olivier LEMAIRE: gt Oi, eu tenho procurado por 2 dias para uma maneira de Converte o número inteiro gt para o número binário 0-acolchoado, nada. Eu preciso obter números convertidos gt com um número definido de bits. Por exemplo, em 8 bits 2 00000010 Abra esta postagem na tela de discussão Denuncie Conteúdo como inapropriado Re: inteiro para binário 0-acolchoado Em resposta a esta postagem por Olivier LEMAIRE No próximo 15 de junho de 2017, às 22:29, Olivier LEMAIRE Gt escreveu: gt b str (bin (número)) 2: gt se len (b) tamanho: gt b (size-len (b)) quot0quotb Você não precisa do str () lá como bin () já retorna um número. É uma simplificação relativamente trivial - embora isso torne o código mais enigmático: depois de digitar isso, eu vi o post de Daniels, o que é bastante melhor. Vá com aquela para minas de preenchimento zero mais geral, porém, você pode almoçar com outros tokens. Abra esta postagem na exibição de tópicos Conteúdo do relatório como inapropriado Re: inteiro para binário 0-acolchoado Em resposta a esta postagem por Olivier LEMAIRE Olivier LEMAIRE escreveu: gt Eu tenho procurado por 2 dias para uma maneira de converter inteiro para o número binário gt 0-acolchoado , nada. Eu preciso obter números convertidos com um número definido gt de bits. Por exemplo, em 8 bits 2 00000010 escrevi o seguinte: gt b str (bin (number)) 2: O resultado de bin () já é uma string, não é necessário aplicar str (). Gt se len (b) tamanho: gt b (size-len (b)) quot0quotb b. zfill (tamanho) pode fazer isso. Gt Embora, o que você pensa sobre isso. De outra maneira (requer o Python 2.7): gtgtgt quot bquot. format (42, 10) 0000101010 Abra esta postagem na exibição threaded Denuncie Conteúdo como Inadequado Re: inteiro para binário 0-acolchoado Obrigado a todos vocês. Então, finalmente, eu simplesmente posso escrever. Ltcodegt usrbinenv python def int2binPadded (número, tamanho): quotquotquotO objetivo desta função é converter o número inteiro para o número binário 0-padded. quotquotquot if type (number) int ou number lt 0: raise ValueError, quotshould ser um número inteiro positivo se tipo (Tamanho) int: aumentar ValueError, quotshould ser um número inteiro, se o número gt (2size) -1: aumentar ValueError, quotnumber é muito grande demais converter int para bin Abrir esta postagem na exibição threadada Denunciar Conteúdo como Inadequado Re: inteiro para binário 0-acolchoado Em resposta a esta postagem por Daniel Rentz-2 Em 06152017 07:33, Daniel Rentz escreveu: gt Am 15.06.2017 14:29, schrieb Olivier LEMAIRE: gtgt Olá, eu tenho procurado por 2 dias para uma maneira de converter inteiro Gtgt para o número binário 0-acolchoado, nada. Eu preciso obter números convertidos gtgt com um número definido de bits. Por exemplo, em 8 bits 2 00000010 gt gt bin (2) 2:.zfill (8) Apenas para ter no segmento (embora o OP pareça estar usando 2.6 ou posterior), a função bin () parece ter sido adicionada em 2.6, o que é algo que eu desejei ter sido back-portado para 2.4 e 2.5, como eu já estive suficientemente codificado contra versões anteriores do Python para ter (re) escrito uma função bin () várias vezes. Ah bem. Abra esta postagem na exibição threaded Conteúdo do relatório como inapropriado Re: inteiro para binário 0-acolchoado Em resposta a esta postagem por Olivier LEMAIRE Abra esta postagem na exibição threadada Denunciar conteúdo como inapropriado Re: inteiro para binário 0-acolchoado Em 15 de junho, 9: 33h, Olivier LEMAIRE lthidden email gt escreveu: gt Você está certo, uso o Python 2.6.6 Isso funciona muito bem em 2.6.5 e mais tarde (e provavelmente mais cedo). Você só precisa numerar seus espaços reservados. O primeiro conjunto de braçadeiras formata i (seu valor), o segundo conjunto especifica o campo com (ou seja, 8): Abra esta postagem na exibição threadada Conteúdo do relatório como Reimporâneo inapropriado: inteiro para binário 0 gadget gtgtgt b. format (255, 1 2 16) 0b0000000011111111 gtgtgt b. format (-255, 1 2 16) -0b0000000011111111 gtgtgt gtgtgt eval (b. format (255, 1 2 16)) 255 gtgtgt eval (b. format (-255, 1 2 16)) - 255 gtgtgt Abrir esta postagem na vista threaded Denunciar conteúdo como inapropriado Re: integer to binary 0-padded On Fri, 17 Jun 2017 23:14:09 -0700, jmfauth escreveu: gtgtgtgt b. format (255, 1 2 16) gt 0b0000000011111111 Gtgtgtgt b. format (-255, 1 2 16) gt -0b0000000011111111 gtgtgtgt gtgtgtgt eval (b. format (255, 1 2 16)) gt 255 gtgtgtgt eval (b. format (-255, 1 2 16)) gt -255 Esta é uma questão Ou você simplesmente decidiu compartilhar algum código Deixe um contexto suficiente para que os leitores possam entender o que você está falando.
No comments:
Post a Comment