C# 2진수를 단일 정밀도로 변환하는 방법

using System;
using System.Text;

class Program
{
  static void Main()
  {
  	float  ff = 52.368F;
    byte[] bb = BitConverter.GetBytes(ff);
    string s  = ToString(bb);
    Console.WriteLine(s);
    Console.WriteLine(ToSingle(s));
  }
  
  static string ToString(byte[] bb)
  {
  	StringBuilder sb = new StringBuilder();
  	foreach (byte b in bb)
  	{
  	  sb.Append(Convert.ToString(b, 2).PadLeft(8, '0'));
  	}
  	return sb.ToString();
  }
  	
  static float ToSingle(string s)
  {
    byte[] b = new byte[4];
    byte[] d = { 1, 2, 4, 8, 16, 32, 64, 128 };
    for (int i = 0; i < 4; i++)
    {
      b[i] = 0;
      for (int j = 0; j < 8; j++)
      {
        if (s[i*8 + (7-j)] == '1') b[i] += d[j];
      }
    }
    return BitConverter.ToSingle(b, 0);
  }
}
  

좋은 웹페이지 즐겨찾기