2014-02-09 3 views
0

그래서 배열로 읽을 필요가 반 부동 값을 저장하는이 이진 파일이 있습니다.배열로 반 float 읽기

I는 다음과 같습니다 배열에을 읽을 수
00 BC 00 00 DD C4 

Where the first two bytes represent = -1., 
3rd & 4th = 0., 
5th & 6th = -4.86328125, 

, {-1.000000, 0.000031, -4.863281}

이 작업을 수행하는 방법의 모든 단서는?

ps. 나는 C#이 반 플로트를 직접 다루지 않는다는 것을 알고있다.

답변

1

다음 라이브러리를 확인하십시오. 반 수식을 지원하는 Half 클래스를 구현합니다.

http://sourceforge.net/p/csharp-half/code/HEAD/tree/

사용법 : (BTW, 두 번째 숫자는 0이 아닌 0.000031입니다)

 byte[] array = new byte[]{ 
      0x00, 0xBC, 0x00, 0x00, 0xDD, 0xC4 
     }; 

     Half h1 = Half.ToHalf(array, 0); 
     Half h2 = Half.ToHalf(array, 2); 
     Half h3 = Half.ToHalf(array, 4); 

     float f1 = (float)h1; 
     float f2 = (float)h2; 
     float f3 = (float)h3; 

     Console.WriteLine("h1 = {0}; f1 = {1}", h1, f1); 
     Console.WriteLine("h2 = {0}; f2 = {1}", h2, f2); 
     Console.WriteLine("h3 = {0}; f3 = {1}", h3, f3); 

     /* outputs 
     * 
     * h1 = -1; f1 = -1 
     * h2 = 0; f2 = 0 
     * h3 = -4.863281; f3 = -4.863281 
     * 
     */ 

편집 :
사용이 떠 절반에서 캐스팅.

+0

정말 고마워요, 매력처럼 작동합니다! –