2009-07-02 36 views
6

Làm thế nào để chuyển đổi chuỗi thập lục phân sang điểm nổi chính xác đơn trong Java?Làm thế nào để chuyển đổi chuỗi hex để nổi trong Java?

Ví dụ: cách triển khai:

float f = HexStringToFloat ("BF800000"); // f bây giờ sẽ chứa -1.0

Tôi yêu cầu này bởi vì tôi đã cố gắng:

float f = (float)(-1.0); 
String s = String.format("%08x", Float.floatToRawIntBits(f)); 
f = Float.intBitsToFloat(Integer.valueOf(s,16).intValue()); 

Nhưng tôi nhận được ngoại lệ sau đây:

java.lang.NumberFormatException: Đối với chuỗi đầu vào: "bf800000 "

Trả lời

16
public class Test { 
    public static void main (String[] args) { 

     String myString = "BF800000"; 
     Long i = Long.parseLong(myString, 16); 
     Float f = Float.intBitsToFloat(i.intValue()); 
     System.out.println(f); 
     System.out.println(Integer.toHexString(Float.floatToIntBits(f))); 
    } 
} 
+0

Tôi nhận được: java.lang.NumberFormatException: Đối với chuỗi đầu vào: "BF800000" – apalopohapa

+0

Khi thử nghiệm: Float.intBitsToFloat (Integer.valueOf ("BF800000", 16) .intValue()); Tôi nhận ngoại lệ: java.lang.NumberFormatException: Đối với chuỗi đầu vào: "BF800000" – apalopohapa

+0

Nó đang tràn một int. Chuyển nó sang Long.valueOf (myString, 16) không ném ngoại lệ, nhưng kết quả là -1.0 thay vì 10.0. Bạn có chắc là 10.0 là kết quả chính xác không? –

2

Bạn cần phải chuyển đổi các giá trị hex đến một int (trái như một bài tập) và sau đó sử dụng Float.intBitsToFloat(int)

Các vấn đề liên quan