16进制字符串转换为float值 有一个16进制字符串,请问如何转换为float类型的值?如有:43B48000 41180000 48A74680 三个字符串 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 DWORD a = ::strtoul(str,0,16);float b = (float)a; int StrLen = YourStr.length;Char SubChar;int Rst=0;for (int i=0;i<StrLen;i++){ SubChar=YourStr.subString(i); if (SubChar>='0' && SubChar<='9') { Rst+=(SubChar-48)*(i*16); } else if(SubChar>='A' && SubChar<='F') { Rst+=(SubChar-55)*(i*16); } else if(SubChar>='a' && SubChar<='f') { Rst+=(SubChar-87)*(i*16); } else { Rst=0; //如查非法字符 break; }}return Rst; //没有测过,由ASCII码算的,不对的话,自己改改。 搞定了~public static void toFloat(String s) { int intBits = Integer.parseInt(s, 16); float f = Float.intBitsToFloat(intBits); System.out.println(f); }double的:public static void toDouble(String s) { long longBits = Long.parseLong(s, 16); double d = Double.longBitsToDouble(longBits); System.out.println(d); } 上面的两个解法都没有考虑小数部分: public static Float parseFloatHex(String hexString) { // 如果解析出错,则抛出异常 String[] slit = hexString.split("[.]"); float f = 0; if (slit.length > 2) { throw new IllegalArgumentException(""); } if (slit[0].length() > 0) { //如果含有整数部分 f += Integer.parseInt(slit[0], 16); } if(slit.length == 2) { int div = 1; for (int i = 0; i < slit[1].length(); i++) { div *= 16; } f += Integer.parseInt(slit[1], 16) * 1.0 / div; } return f; } zephyr_cc的正解, 其他的可能都没明白怎么回事,这是一个float的16进制存储的问题 惠普电脑如何取消Ctrl+Art+↓如何取消 AWT/Swing编程题 java 开发的c/s 数据库程序中 建立存储过程问题 如何创建不知道名字的类的实例 关于EditPlus格式设置问题 如何把字符串中的回车符去除掉? 怎么样获得一个画板(Canvas)上某一点的颜色?急急急,在线等 模仿junit 4 对main 方法的测试 求改进 请帮我解决一些问题,谢谢高手! java 反编译软件哪个最好?误差最少? 怎样取出List中对象的值? 做流媒体软件需要看什么方面的知识
float b = (float)a;
Char SubChar;
int Rst=0;
for (int i=0;i<StrLen;i++)
{
SubChar=YourStr.subString(i);
if (SubChar>='0' && SubChar<='9')
{
Rst+=(SubChar-48)*(i*16);
}
else if(SubChar>='A' && SubChar<='F')
{
Rst+=(SubChar-55)*(i*16);
}
else if(SubChar>='a' && SubChar<='f')
{
Rst+=(SubChar-87)*(i*16);
}
else
{
Rst=0; //如查非法字符
break;
}
}
return Rst; //没有测过,由ASCII码算的,不对的话,自己改改。
public static void toFloat(String s) {
int intBits = Integer.parseInt(s, 16);
float f = Float.intBitsToFloat(intBits);
System.out.println(f);
}double的:
public static void toDouble(String s) {
long longBits = Long.parseLong(s, 16);
double d = Double.longBitsToDouble(longBits);
System.out.println(d);
}
// 如果解析出错,则抛出异常
String[] slit = hexString.split("[.]");
float f = 0;
if (slit.length > 2) {
throw new IllegalArgumentException("");
}
if (slit[0].length() > 0) { //如果含有整数部分
f += Integer.parseInt(slit[0], 16);
}
if(slit.length == 2) {
int div = 1;
for (int i = 0; i < slit[1].length(); i++) {
div *= 16;
}
f += Integer.parseInt(slit[1], 16) * 1.0 / div;
}
return f;
}
其他的可能都没明白怎么回事,这是一个float的16进制存储的问题