單精度數據類型轉換爲IEEE-754格式

          在我們做FPGA驗證時,通常C語言或者用matlab來產生算法的輸入數據。這時候,通常C語言的浮點數據(單精度或者雙精度數據)在FPGA中運用時需要轉換爲IEEE-754的格式。下面本人寫了一個C語言小程序,可以將浮點數據轉換爲內存存儲的IEEE-754格式。

// float2int.cpp : 定義控制檯應用程序的入口點。
//

#include "stdio.h"
#include <stdlib.h>
#include <stdlib.h>
#include "stdafx.h"
#include<windows.h>

//驗證數據轉換正確與否的網站
//https://www.h-schmidt.net/FloatConverter/IEEE754.html
//
int _tmain(int argc, _TCHAR* argv[])
{

    FILE *fid0 = NULL;
    FILE *fid1 = NULL;

    float rd_dat[20000];
    int   rd_dat1;
    char  rd_d[40];
    int   num = 0;

    fid0 = fopen("E:/proj1_music/david-file/music_out.coe","r+");
    fid1 = fopen("E:/proj1_music/david-file/tran_out.coe","w");

    fid0 = fopen("E:/proj1_music/david-file/music_out.coe","r+");
    //E:\ADBF\David\data
    int  nlen0  = ftell(fid0);
    printf("begin to tansfer");
    fprintf(fid1,"MEMORY_INITIALIZATION_RADIX=16;\n");
    fprintf(fid1,"MEMORY_INITIALIZATION_VECTOR=\n");

    while (!feof(fid0))
    {
        //fgets(rd_d,40,fid0);  //讀取一行
        fscanf(fid0,"%f",&rd_dat);
        //rd_dat = float(rd_d);
        printf("%f\n", rd_dat[0]); //輸出
        rd_dat1 =  *(int*)(&rd_dat[0]);
        printf("%x\n",rd_dat1);

        fprintf(fid1,"%x,\n",rd_dat1);
      }
    fprintf(fid1,";\n",rd_dat1);
    fclose(fid0);  //關閉文件
    fclose(fid1);  //關閉文件

    while(1);
    return 0;
}

 

例如:music_out.coe有一個數據是7.5689,那麼轉換之後的數據就是0x40f2346e.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章