Sunday 19 November 2017

0x50 in binary option


Divertimento com binário Eu sei o que você está pensando que apenas disse dados binários Como, 1s e 0s Bem, sim, sim eu fiz. Se você é como eu, a última vez que você teve que fazer qualquer coisa com dados binários diretos foi na faculdade quando você estava aprendendo como converter entre binário para hexadecimal para decimal e para trás novamente. Gostaria de imaginar que a maioria de nós correr em hexadecimal um pouco freqüentemente, mas que realmente não temos de lidar com dados binários como muitas vezes. Alguns de fundo Em um dos meus projetos recentes, eu tive que escrever uma API que interfaceava com algum hardware, que era algo relativamente novo para mim. A maior parte do meu trabalho no passado tem sido aplicações padrão GUI do lado do cliente ou aplicações web. Eu ainda tenho que ter escrito todas as aplicações que falam sobre uma porta serial. Mesmo com este novo projeto, eu não tenho que falar sobre as portas, porque o hardware tinha um SDK relativamente agradável para ele. A falha primária com o SDK era que ainda tinha bastantes métodos que retornavam apenas arrays de bytes. A documentação para esses arrays de bytes foi especificada em uma tabela de bits em outras palavras, se o segundo bit no quarto byte está ligado, então um recurso é acessível você começa a idéia. Em muitos casos, eu tive que analisar esses bits para determinar o que o hardware estava realmente me devolvendo. Eu não posso mostrar-lhe qualquer um do código que eu usei neste projeto, mas eu posso fornecer um exemplo semelhante. Você sabe TCP, certo Um dos protocolos de rede que usamos todos os dias sem sequer pensar Heres uma imagem da Wikipedia que mostra a estrutura para o cabeçalho TCP (via Wikipedia): Por diversão, vamos supor que temos sido fornecidos os dados abaixo e Wed como para analisar isso em uma estrutura que se parece mais com a tabela tem a especificação TCP. (Para aqueles que são curiosos, eu tenho esses dados do Wireshark) Claro, eu não era fornecido meus bytes em um formato tão bonito arrays byte vão olhar muito mais como este: The Naive (e horrivelmente não performant) Way My O primeiro passo foi ver a estrutura do que eu estava passando. Eu não sou como aqueles caras em filmes - eu não sonho em binário e eu não vejo estrutura em uns e zeros. Então, eu queria obter os dados em um formato tabular. Para fazer isso, minha primeira parada foi Powershell. Dada a matriz de bytes acima, tudo o que precisava era do snippet abaixo de Powershell (observe que eu usei o prefixo 0x com os valores hexadecimais não há nenhuma notação literal binária): Agora que temos uma matriz de bytes, podemos começar a brincar com isto. Eu criei o seguinte script que eu chamei Get-ByteTable. ps1: Basicamente, o uso é apenas bytes Get-ByteTable. ps1. Agora, o problema é a formatação de saída que apenas despeja a lista de PSObjects e o formato padrão é Format-List. Então, vamos tentar, bytes Get-ByteTable. ps1 Format-Table - AutoSize - Property. O sinalizador AutoSize informa Powershell para usar como pouco espaço como possível e o sinalizador de propriedade indica Powershell para saída todas as propriedades como colunas se você não fizer isso, PowerShell somente saída algumas das colunas. O script também tem um parâmetro se você quiser especificar o comprimento da linha. Se você preferir trabalhar com os dados em algo como o Excel, você poderia canalizar a saída para Export-Csv. Confira a saída de amostra abaixo: Podemos usar esta tabela para alinhar nossos valores com o que vimos a partir do protocolo de cabeçalho TCP. Por exemplo, os bits 0-15 compõem a nossa porta de origem. Na tabela acima, esses bits saem para ser 1101111000111001 ou 56889 em decimal. Isso se alinha com o que podemos ver no Wireshark, então nosso script funciona como esperado. O Melhor (e mais Programmatic) Way Ok, para que o script Powershell foi divertido. Mas a sério, não era a maneira certa de lidar com dados binários. Pegamos bits (isto é, 0s e 1s) e os convertemos em hexadecimal, mas hexadecimal como uma string. E então analisamos isso. Não só foi não-performant, mas também foi uma explosão de dados. Uma maneira melhor de analisar dados binários é a classe System. Collections. BitArray. Ele recebe uma matriz de bytes e apresenta essa matriz de bytes como uma matriz de booleanos true é a 1 como false é a 0. Muito fácil. Agora, a classe BitArray não é fornecida com qualquer meio de trabalhar com os dados em um formato tabular. Não é um grande obstáculo, mas era algo que eu queria ser capaz de fazer, porque a especificação que eu estava lidando mostrou os bits em uma estrutura tabular, também. Na verdade, tratar a matriz de uma forma tabular é fácil (ou seja, rowLength rowIndex columnIndex realIndex) e é melhor servido através de métodos de extensão como mostrado abaixo: Uso, então, seria: Im não particularmente feliz com os nomes do método e eu havent vir acima com um grande Maneira de especificar o comprimento da linha como está agora, minhas extensões estão usando o comprimento da linha de 8 (BYTELENGTH). Eu acho que a melhor maneira de lidar com isso seria para embrulhar a classe BitArray em vez de realmente usando métodos de extensão. Quem sabia Calc poderia fazer isso. A última coisa que eu queria compartilhar é algum awesomeness calc. exe. Primeiro, certifique-se de que está executando calc. exe no modo Programmer. Em seguida, vamos começar no modo Dec (decimal) e digite 255. Naturalmente, você pode mudar entre decimal, hexadecimal, octal ou binário e ver os números resultantes. Isso não me surpreendeu. No entanto, observe a seção abaixo da exibição de número, onde ele mostra o binário para o seu número. Tente clicar em um dos bits. É incrivel. Ele vira o pouco para você Eu não tinha idéia calc poderia fazer isso Uma das coisas que eu realmente gosto sobre algumas das características do programador de calc é que você pode agora visualmente ver o que acontece quando você direita ou esquerda shift bits (Lsh e Rsh respectivamente ). Acontece que é uma ferramenta muito boa para observar visualmente operações de bit. Não só isso, mas também é bom para ajudar a explicar coisas como Twos complementar. Hex to Decimal Converter Hexadecimal são números com base 16. Ele consiste em um conjunto de 16 números onde 0-9 são representados como 0,1,2,3 , 4,5,6,7,8,9 e 10-15 são representados como A, B, C, D, E, F. Ele não tem símbolos como 10 ou 11, por isso tomar letras como símbolo do alfabeto Inglês. Decimal é o sistema de dez números de dez base e Binário é um sistema de números de base 2 (0s e 1s). Use Hex to Decimal Converter para converter hexadecimal para binário (números com base 2) e números decimais (números com base 10). Converta hexadecimal para código binário para adicionar este calci ao seu site Basta copiar e colar o código abaixo para sua página da web onde você deseja exibir este calculator. dtelnet: um cliente Telnet livre para Windows 16/32/64 dtelnet foi lançado sob a GPL . Uma cópia da GPL está contida no arquivo zip de origem sob o nome COPYING. TXT. Por favor, leia a licença se você baixar a fonte. O programa deve construir com diferentes compiladores, por exemplo, MSVC, Borlandc, Cygwin Current dtelnet versão de lançamento é 1.3.7. É datado de 2017-09-14. Na página de download você pode ver / baixar um arquivo README. TXT sobre as alterações recentes (também nos arquivos ZIP). A primeira versão pública da fonte foi a versão 0.9.1. Existe uma lista de discussão para desenvolvedores dtelnet (dtelnet-devellists. sourceforge. net). Discussão de bugs e aprimoramentos são realizados na lista. Envie qualquer relatório de bug para esta lista. Aponte seu navegador para se inscrever na lista. Existe uma lista separada para anúncios de novas versões (dtelnet-announcelists. sourceforge. net). Inscreva-se aqui. Não envie nenhum comentário para esta lista. A antiga lista de discussão dtelnet está localizada aqui. Se você passa a maior parte de seu tempo no Unix, provavelmente não se sente em casa, a menos que a sessão pareça correta. Para esse fim, dtelnet tem um número de ligações de chave que você deve gostar

No comments:

Post a Comment