BinaryToFloat (String function)

From m204wiki
Revision as of 01:05, 18 August 2010 by JAL (talk | contribs)
Jump to navigation Jump to search

This intrinsic function converts a binary string representation of a floating point number to that number.

The BinaryToFloat function is available as of version 7.5 of the Sirius Mods.

BinaryToFloat syntax

  %num = string:BinaryToFloat                                                                                

Syntax Terms

%num
A numeric variable to receive the float value of the method object string.
string
A binary string value that can have a length of 4, 8, or 16 bytes.

Usage Notes

Examples

The following program demonstrates the BinaryToFloat method, converting a series of different-length representations of the same float value.

The example also uses:

   begin                                                                                                     
     image silly                                                                                             
        a   is float len 4                                                                                   
        b   is float len 8     
        c   is float len 16                                                 
      end image                                                             
      prepare image silly                                                   
      %i is float                                                           
      %s is string len 30                                                   
                                                                            
      for %i from -3.3 to 3.3 by 1.1                                        
         printText {%i:right(15)}:                                          
         %silly:a = %i; %silly:b = %i; %silly:c = %i;                       
         %s = $lstr_get_image('SILLY')                                      
         printText {~} = {%s:stringToHex}                                   
         printText {~} = {%s:substring(1, 4):binaryToFloat}                 
         printText {~} = {%s:substring(5, 8):binaryToFloat}                 
         printText {~} = {%s:substring(13, 16):binaryToFloat}               
      end for                                                               
   end                                                                      
                                                                            

The result is:

              -3.3:                                                         
   %s:stringToHex = C134CCCDC134CCCCCCCCCCCCC134CCCCCCCCCCCC0000000000000000
   %s:substring(1, 4):binaryToFloat = -3.30000019073486                     
   %s:substring(5, 8):binaryToFloat = -3.3                                  
   %s:substring(13, 16):binaryToFloat = -3.3                                
              -2.2:                                                         
   %s:stringToHex = C1233333C123333333333333C1233333333333330000000000000000
   %s:substring(1, 4):binaryToFloat = -2.19999980926514                     
   %s:substring(5, 8):binaryToFloat = -2.2                                  
   %s:substring(13, 16):binaryToFloat = -2.2                                
              -1.1:                                                         
   %s:stringToHex = C111999AC111999999999999C1119999999999990000000000000000                                                                              
   %s:substring(1, 4):binaryToFloat = -1.10000038146973                           
   %s:substring(5, 8):binaryToFloat = -1.1                                        
   %s:substring(13, 16):binaryToFloat = -1.1                                      
                 0:                                                               
   %s:stringToHex = 00000000000000000000000000000000000000000000000000000000      
   %s:substring(1, 4):binaryToFloat = 0                                           
   %s:substring(5, 8):binaryToFloat = 0                                           
   %s:substring(13, 16):binaryToFloat = 0                                         
               1.1:                                                               
   %s:stringToHex = 4111999A411199999999999941119999999999990000000000000000      
   %s:substring(1, 4):binaryToFloat = 1.10000038146973                            
   %s:substring(5, 8):binaryToFloat = 1.1                                         
   %s:substring(13, 16):binaryToFloat = 1.1                                       
               2.2:                                                               
   %s:stringToHex = 41233333412333333333333341233333333333330000000000000000      
   %s:substring(1, 4):binaryToFloat = 2.19999980926514                            
   %s:substring(5, 8):binaryToFloat = 2.2                                         
   %s:substring(13, 16):binaryToFloat = 2.2                                       
               3.3:                                                               
   %s:stringToHex = 4134CCCD4134CCCCCCCCCCCC4134CCCCCCCCCCCC0000000000000000      
   %s:substring(1, 4):binaryToFloat = 3.30000019073486                            
   %s:substring(5, 8):binaryToFloat = 3.3                                         
   %s:substring(13, 16):binaryToFloat = 3.3