gtravan@uunet.uu.net (George Travan) (07/06/89)
I have a need to convert vax floating point numbers to sun ieee format. problem is the routine : union ie3float { char c[4]; int exp; float f; }; void vf2ie3f(u,n) register union ie3float *u; register int n; { /* VAX float to IEEE float */ register char tmp; register int i; for(i=0; i<n; u++,i++) { if (! u->exp) continue; tmp=u->c[0]; u->c[0]=u->c[1]-1; u->c[1]=tmp; tmp=u->c[2]; u->c[2]=u->c[3]; u->c[3]=tmp; } } when passed a pointer to data such as 0x80400000 which corresponds to vax 0x00004080 = 1.0 doesnt give me the right answer on my SUN 3/60. i get -1369117816400609700000000000000000000000.000000 (??) can you see anything here that i cant? /GeO ACSnet: gtravan@sirius.ua.oz