Originariamente inviato da piunreks
si lo standard è l'IEEE...
il metodo intBitsToFloat() nn fa quello che mi serve.
Mi spiego meglio perchè forse sono stato capito male...
io ho un file di tipo .dat dove ogni 4Byte (o 32 bit) mi rappresentano un dato (un'altezza di un punto...) questa successione di quattro Byte deve esser convertita in float.... la storia mantissa, esponente, segno insomma.
Quindi io leggendo da file riesco ad ottenere la stringa lunga 32 caratteri con dentro il codice binario.
ed ora?
No ... forse non hai capito bene tu ....
All'inizio del 3d hai fatto un esempio di stringa con 32 caratteri, poi adesso parli di un file che contiene 4 byte e poi mi parli di nuovo di ottenere dal file una stringa di 32 caratteri con il codice binario?? Deciditi ... se hai 4 byte, li prendi, li metti insieme per formare un int e quindi passi il valore a intBitsToFloat(). Se invece parti da una stringa, allora il codice che ho postato sopra è valido.
Ah, questi 4 byte che dici di avere nel file in che formato sono? Little-endian o Big-endian???
Comunque prima di dire che intBitsToFloat() non ti serve, prova questo programmino:
codice:
public class Prova
{
public static void main (String[] args)
{
float val = 1.2345f;
System.out.format ("val = %f%n", val);
int bits = Float.floatToIntBits (val);
System.out.format ("bits = %08X%n", bits);
byte b1 = (byte) (bits >>> 24);
byte b2 = (byte) (bits >>> 16 & 255);
byte b3 = (byte) (bits >>> 8 & 255);
byte b4 = (byte) (bits & 255);
System.out.format ("b1..4 = %02X %02X %02X %02X%n", b1, b2, b3, b4);
int bits2 = b1 << 24 | (b2 & 255) << 16 | (b3 & 255) << 8 | (b4 & 255);
System.out.format ("bits2 = %08X%n", bits2);
float val2 = Float.intBitsToFloat (bits2);
System.out.format ("val2 = %f%n", val2);
}
}