資源簡介
本代碼實現了十進制浮點數與IEEE745標準的32位二進制浮點數的互相轉換,二進制浮點數有十六進制和二進制兩者表示形式,

代碼片段和文件信息
using?System;
using?System.Collections.Generic;
using?System.Linq;
using?System.Text;
using?System.Windows.Forms;
namespace?FlaotConvert
{
????class?FConvert
????{
????????public?static?string?FloatToStandard(double?f?int?style)
????????{
????????????char[]?Num?=?new?char[32];//32為二進制結果加1結束符
????????????if(f<0)?//f為負數?符號位Num[0]賦1
????????????{
????????????????Num[0]?=?‘1‘;
????????????????f?=?f*(-1);?//轉換為整數
????????????}
????????????else
????????????????Num[0]?=?‘0‘;
????????????//求指數
????????????int?exponent=0;
????????????if(f?>=?1)//指數符號為正情況,即fabs(f)>=1?
????????????{
????????????????while(f>=2)
????????????????{
????????????????exponent++;
????????????????f?=?f/2;
????????????????}
????????????}
????????????else//負指數情況
????????????{
????????????????while?(f<1)
????????????????{
????????????????exponent++;
????????????????f?=?f*2;
????????????????}
????????????????exponent?=?(128-exponent)?+?128;//(128-exponent)為補碼+128是指數符號位置1
????????????}
????????????exponent?+=?127;//指數轉換為階碼
????????????int?i;
????????????for(i=8;i>=1;i--)//將指數轉換為二進制數
????????????{
????????????????if(exponent%2?==?0)
????????????????Num[i]?=?‘0‘;
????????????????else
????????????????Num[i]?=?‘1‘;
????????????????exponent??/=?2;
????????????}
????????
????????????f?=?f?-1;//小數轉換為標準格式
????????????//求小數部分
????????????double?s?=?1;
????????????for(i=9;i<32;i++)
????????????{
????????????????s?/=?2;
????????????????if(f>=s)
????????????????{
????????????????????//MessageBox.Show(Convert.ToString(s));
????????????????f?=?f-s;
????????????????Num[i]?=?‘1‘;
????????????????}
????????????????else
????????????????Num[i]?=?‘0‘;
????????????}
????????????if?(style?==?2)//二進制輸出
????????????{
????????????????string?tt?=?new?string(Num);
????????????????return?tt;
????????????}
????????????else?//二進制轉換為十六進制
????????????{
????????????????char?sum;
????????????????int?j?=?0;
????????????????for?(i?=?0;?i?32;?i?=?i?+?4?j++)
????????????????{
????????????????????sum?=?Convert.ToChar((Num[i]?-?‘0‘)?*?8?+?(Num[i?+?1]?-?‘0‘)?*?4?+?(Num[i?+?2]?-?‘0‘)?*?2?+?(Num[i?+?3]?-?‘0‘));
????????????????????if?(sum?>?9)
????????????????????????Num[j]?=?Convert.ToChar((sum?-?10)?+?‘a‘);
????????????????????else
????????????????????????Num[j]?=?Convert.ToChar(sum?+?‘0‘);
????????????????}
????????????????string?tt?=?new?string(Num);
????????????????tt?=?tt.Substring(0?8);
????????????????return?tt;
????????????}
????????}
?????????public?static?double?StandardToFloat(string?FNum?int?style)
????????{
????????????char[]?Num?=?new?char[32];
????????????char[]?Hex?=?new?char[8];
????????
????????????int?i?j?value;
????????????if?(style?==?2)//二進制
????????????{
????????????????for?(i?=?0;?i?32;?i++)
????????????????????Num[i]?=?FNum[i];
????????????}
????????????else//十六進制轉換為二進制
????????????{
????????????????for?(i?=?0;?i?8;?i++)
????????????????{
????????????????????Hex[i]?
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件??????14336??2011-04-25?21:38??FlaotConvert\FlaotConvert\bin\Debug\FlaotConvert.exe
?????文件??????34304??2011-04-25?21:38??FlaotConvert\FlaotConvert\bin\Debug\FlaotConvert.pdb
?????文件??????14328??2011-04-25?21:35??FlaotConvert\FlaotConvert\bin\Debug\FlaotConvert.vshost.exe
?????文件????????490??2009-06-11?05:14??FlaotConvert\FlaotConvert\bin\Debug\FlaotConvert.vshost.exe.manifest
?????文件???????5235??2011-04-25?12:11??FlaotConvert\FlaotConvert\FConvert.cs
?????文件???????3809??2011-04-25?21:35??FlaotConvert\FlaotConvert\FlaotConvert.csproj
?????文件???????3932??2011-04-25?21:38??FlaotConvert\FlaotConvert\Form1.cs
?????文件??????12834??2011-04-25?21:29??FlaotConvert\FlaotConvert\Form1.Designer.cs
?????文件???????5814??2011-04-25?21:29??FlaotConvert\FlaotConvert\Form1.resx
?????文件???????1558??2011-04-25?21:35??FlaotConvert\FlaotConvert\obj\Debug\FlaotConvert.csproj.FileListAbsolute.txt
?????文件????????847??2011-04-25?21:29??FlaotConvert\FlaotConvert\obj\Debug\FlaotConvert.csproj.GenerateResource.Cache
?????文件??????14336??2011-04-25?21:38??FlaotConvert\FlaotConvert\obj\Debug\FlaotConvert.exe
?????文件????????180??2011-04-25?21:38??FlaotConvert\FlaotConvert\obj\Debug\FlaotConvert.form1.resources
?????文件??????34304??2011-04-25?21:38??FlaotConvert\FlaotConvert\obj\Debug\FlaotConvert.pdb
?????文件????????180??2011-04-25?21:38??FlaotConvert\FlaotConvert\obj\Debug\FlaotConvert.Properties.Resources.resources
?????文件????????493??2011-04-25?11:31??FlaotConvert\FlaotConvert\Program.cs
?????文件???????1356??2011-04-24?21:18??FlaotConvert\FlaotConvert\Properties\AssemblyInfo.cs
?????文件???????2874??2011-04-24?21:18??FlaotConvert\FlaotConvert\Properties\Resources.Designer.cs
?????文件???????5612??2011-04-24?21:18??FlaotConvert\FlaotConvert\Properties\Resources.resx
?????文件???????1097??2011-04-24?21:18??FlaotConvert\FlaotConvert\Properties\Settings.Designer.cs
?????文件????????249??2011-04-24?21:18??FlaotConvert\FlaotConvert\Properties\Settings.settings
?????文件??????14336??2011-04-25?21:38??FlaotConvert\FlaotConvert.exe
?????文件????????926??2011-04-24?21:18??FlaotConvert\FlaotConvert.sln
????..A..H.?????19456??2011-04-25?21:41??FlaotConvert\FlaotConvert.suo
?????目錄??????????0??2011-04-24?22:20??FlaotConvert\FlaotConvert\obj\Debug\Refactor
?????目錄??????????0??2011-04-24?21:18??FlaotConvert\FlaotConvert\obj\Debug\TempPE
?????目錄??????????0??2011-04-25?21:29??FlaotConvert\FlaotConvert\bin\Debug
?????目錄??????????0??2011-04-25?21:38??FlaotConvert\FlaotConvert\obj\Debug
?????目錄??????????0??2011-04-24?22:11??FlaotConvert\FlaotConvert\bin
?????目錄??????????0??2011-04-24?21:18??FlaotConvert\FlaotConvert\obj
............此處省略6個文件信息
- 上一篇:C#實現刻度尺包含像素和毫米
- 下一篇:c#讀取遙感影像代碼
評論
共有 條評論