none
Atribuir valor hexadecimal a uma variável double no C++ RRS feed

  • Pergunta

  • Pessoal,

    No software Matlab eu converti uma variável double com a função num2hex (veja documentação: http://www.mathworks.com/help/techdoc/ref/num2hex.html). Esta função retorna uma representação hexadecimal no padrão IEEE.

    Ex. no Matlab:

    g = 9.80665;

    num2hex(g)

    ans =

    40239d013a92a305

    Isto é, o resutado em hexa é: 0x40239d013a92a305

    No visual studio 2010 C++ eu não consigo atribuir este valor a uma variável double (o resultado é um valor "maluco"), vejam o código:

    #include <iostream>
    using namespace std;

    int main () {
        double n = 0x40239d013a92a305;

        cout << hex << n << endl;
        cout << dec << n << endl;
        cout << oct << n << endl;

        return 0;
    }

    Resultado:

    4.62171e+018
    4.62171e+018
    4.62171e+018

    Obrigado pela ajuda.

    Rafael Costa



    • Editado Rafa.CDC quinta-feira, 22 de setembro de 2011 11:33
    quarta-feira, 21 de setembro de 2011 20:54

Todas as Respostas

  • O valor de "n" (double n = 0x40239d013a92a305) em decimal (Scientific notation) é o valor apresentado no Resultado que você obteve (4.62171e+018).

    Para conveter double em hexa geralmente é criada uma função (ou usar uma de terceiros que é o seu caso, no qual você está usando o num2hex() do Matlab). O processo inverso é a mesma coisa, você precisa criar ou usar uma função do matlab para converter o valor de hexa para double.

    Veja se a função hex2num do Matlab atente.

     


    quinta-feira, 22 de setembro de 2011 14:25