Eigen und C++ Floats als Bytes speichern und Bytes zu Floats casten



  • Hallo Leute,

    Folgendes Problem, ich besitze eine Datenklasse, in dieser befindet sich folgender Member:

    Eigen::Matrix<unsigned char, Eigen::Dynamic, Eigen::Dynamic> binary_mat;
    

    Jetzt habe ich aber eine Float Matrix, diese möchte ich ohne die Klasse zu ändern darin als binary speichern und dann wieder als float auslesen.
    Meine Ideen und Ansätze:
    Ich versuche das ganze mittels Eigen::Map zu lösen.
    Float als Binary speichern

    Eigen::Map<Eigen::Matrix<unsigned char, Eigen::Dynamic, Eigen::Dynamic>>(
    float_mat&, float_mat.rows(), float_mat.cols() * 4) binary_mat;
    

    Das hier gibt zumindest keine Fehlermeldung. Das nächste hier schon, weil man wohl nicht von unsignes char zu float umwandeln kann. Jemand ne bessere Idee?:

    Eigen::Map<Eigen::Matrix<float, Eigen::Dynamic, Eigen::Dynamic>>(
    binary_mat&, binary_mat.rows(), binary_mat.cols()/4) float_mat;
    


  • Probiere die cast-Funktion, s. Cast Eigen::MatrixXd to Eigen::MatrixXf, also:

    Eigen::Matrix<float, Eigen::Dynamic, Eigen::Dynamic> float_mat = binary_mat.cast<float>();
    

Log in to reply