The following should also be safe, this translates to a memcpy() at the C 
level. This may seem like overkill, but the C compiler should recognize the use 
of memcpy for type punning and optimize it away and generate a register to 
register move.
    
    
    proc flt2arr(f: var float64, a: var array[8, uint8]) =
      assert sizeof(a) == sizeof(f)
      copyMem(addr a[0], addr f, sizeof f)
    
    proc arr2flt(a: var array[8, uint8], f: var float64) =
      assert sizeof(a) == sizeof(f)
      copyMem(addr f, addr a[0], sizeof f)
    
    
    Run

Reply via email to