Click here to Skip to main content
15,878,809 members
Articles / Programming Languages / C#
Alternative
Article

Transform between IEEE, IBM or VAX floating point number formats and bytes expressions

Rate me:
Please Sign up or sign in to vote.
4.00/5 (6 votes)
16 Dec 2012CPOL1 min read 28.7K   279   12   14
This is an alternative for "Transform between IEEE, IBM or VAX floating point number formats and bytes expressions"

Code

Download HERE

Introduction

John Hou's work, Transform between IEEE, IBM, and VAX floating point numbers, was originally written in C++. I took John's work, and converted it to C# 4.0. This code helps with converting IBM floats to IEEE floats and vice-versa. It also includes transformations for VAX floats to IEEE floats.

This is a C# version of John Hou's wonderful work. Tangible software did the initial C++ to C# conversion, which I then cleaned up, fixed missing areas, and then wrapped the engine to make it easier to work with for .NET developers.

Background

John Hou's work is documented here.

http://www.codeproject.com/Articles/12363/Transform-between-IEEE-IBM-or-VAX-floating-point-n?fid=236108&df=90&mpp=10&noise=1&prof=True&sort=Position&view=Expanded&spc=None&fr=1#xx0xx

Using the code

The solution included here has a test project illustrating a simple IBM float conversion. Not every aspect of the code conversion was tested since the immediaten eed was IBM float support. Others are welcome to work on the VAX or IEEE parts. All code is in C#.

The main class library is Converter. It can be called as:

 

Converter c =new Converter();
byte[] bytes = new byte[] { 0x00, 0x00, 0x00, 0x80, 0x31, 0x93, 0x60, 0x48 };
double d = c.ConvertBytesToDouble(Platform.IbmFloat, bytes);


Console.WriteLine("Correct return value should be: " + 1620259200);
Console.WriteLine("Return Value:                   " + d);
Console.WriteLine();
Console.WriteLine("Press any key to continue...");
Console.Read();

Additional methods available off of the Converter class are:

  • ConvertDoublesToBytes - Converts a double value to byte array
  • ConvertSingleToBytes - Converts single floats to byte array

All of the methods will take a Platform enum indicating the source of the origination bytes or doubles. 

History

2012-11-12  Initial version.

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


Written By
Software Developer (Senior) Savian
United States United States
SAS, Microsoft developer/consultant.

Comments and Discussions

 
GeneralMy vote of 4 Pin
geoatif14-Feb-21 7:29
professionalgeoatif14-Feb-21 7:29 
QuestionIssue converting small float values? Pin
Member 121839758-Jan-16 8:58
Member 121839758-Jan-16 8:58 
AnswerFixed link Pin
Alan Churchill12-Feb-15 10:28
Alan Churchill12-Feb-15 10:28 
GeneralThanks for this ... Pin
Hugh Glover28-Jun-13 0:00
Hugh Glover28-Jun-13 0:00 
QuestionCode is GPL Pin
Chase Rayfield22-Jan-13 8:02
Chase Rayfield22-Jan-13 8:02 
AnswerRe: Code is GPL Pin
Alan Churchill3-Mar-13 11:46
Alan Churchill3-Mar-13 11:46 
GeneralRe: Code is GPL Pin
Chase Rayfield16-Oct-14 11:13
Chase Rayfield16-Oct-14 11:13 
GeneralMy vote of 1 Pin
Paulo Zemek17-Dec-12 9:37
mvaPaulo Zemek17-Dec-12 9:37 
GeneralRe: My vote of 1 Pin
Alan Churchill3-Mar-13 11:48
Alan Churchill3-Mar-13 11:48 
QuestionVAX? Pin
PIEBALDconsult17-Dec-12 3:46
mvePIEBALDconsult17-Dec-12 3:46 
SuggestionWould be nice with a download link... Pin
kisko11-Dec-12 21:44
kisko11-Dec-12 21:44 
GeneralRe: Would be nice with a download link... Pin
Alan Churchill16-Dec-12 19:58
Alan Churchill16-Dec-12 19:58 
QuestionDownload Link Missing Pin
Tarek K. Mahfouz18-Nov-12 19:43
Tarek K. Mahfouz18-Nov-12 19:43 
QuestionDownload link Pin
Ngaima Sandiman12-Nov-12 20:45
Ngaima Sandiman12-Nov-12 20:45 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.