0

Converter de Hexadecimal para Decimal com complemento de 2

criado por Rubens Takiguti Ribeiro em 15/02/2011 12:22am
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.

//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 Deletar
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

Comentários:

Mostrando 1 - 2 de 2 comentários
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 (~10 anos atrás)

Marcos Regis disse:
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 (~10 anos atrás)

Novo Comentário:

(Você pode usar tags como <b>, <i> ou <code>. URLs serão convertidas para links automaticamente.)