Converter de Hexadecimal para Decimal com complemento de 2
Usando a função hexdec ou base_convert, conseguimos converter um valor hexadecimal para sua forma decimal positiva.
Para converter um valor hexadecimal que representa um valor negativo, pode ser utilizado a notação com complemento de dois, onde o bit mais significativo é indicado por 1 para negativos e 0 para positivos.
A função proposta serve para converter valores hexadecimais positivos ou negativos para sua notação decimal, independente do tamanho do valor hexadecimal, utilizando a notação de complemento de dois.
Observação: devolve o valor na forma de string e utiliza a extensão "bc".
Para converter um valor hexadecimal que representa um valor negativo, pode ser utilizado a notação com complemento de dois, onde o bit mais significativo é indicado por 1 para negativos e 0 para positivos.
A função proposta serve para converter valores hexadecimais positivos ou negativos para sua notação decimal, independente do tamanho do valor hexadecimal, utilizando a notação de complemento de dois.
//Exemplo $hex = 'FF82AE23'; $dec = converter_hex_dec($hex); echo $dec; // Imprime: -8212957
Observação: devolve o valor na forma de string e utiliza a extensão "bc".
Data | Autor | Changelog | Download |
---|---|---|---|
15/02/2011 12:22am | Rubens Takiguti Ribeiro | - | Versão 0.1 |
15/02/2011 1:03am | Rubens Takiguti Ribeiro | Versão 0.2 | Versão 0.2 |
15/02/2011 1:37am | Rubens Takiguti Ribeiro | Versão 0.3 | Versão 0.3 |
De fato, Marcos, bem mais simples e rápida também. O único inconveniente é que ela, aparentemente, só trabalha com valores hexadecimais de 8 dígitos, que formam os 4 bytes de um número inteiro.
15/02/2011 10:16pm
(~13 anos atrás)
Tem uma forma bem mais simples de fazer isso
echo $hex= sprintf('%X',-50); // FFFFFFCE echo '<br />'; $int=base_convert($hex,16,10); echo $int > pow(2,31)?$int - pow(2,32):$int;
15/02/2011 3:20pm
(~13 anos atrás)