JS 實現十六進制轉浮點數

// 16 進制轉浮點數
function HexToSingle(t) {
	t = t.replace(/\s+/g, "");
	if (t == "") {
		return "";
	}
	if (t == "00000000") {
		return "0";
	}
	if ((t.length > 8) || (isNaN(parseInt(t, 16)))) {
		return "Error";
	}
	if (t.length < 8) {
		t = FillString(t, "0", 8, true);
	}
	t = parseInt(t, 16).toString(2);
	t = FillString(t, "0", 32, true);
	var s = t.substring(0, 1);
	var e = t.substring(1, 9);
	var m = t.substring(9);
	e = parseInt(e, 2) - 127;
	m = "1" + m;
	if (e >= 0) {
		m = m.substr(0, e + 1) + "." + m.substring(e + 1)
	} else {
		m = "0." + FillString(m, "0", m.length - e - 1, true)
	}
	if (m.indexOf(".") == -1) {
		m = m + ".0";
	}
	var a = m.split(".");
	var mi = parseInt(a[0], 2);
	var mf = 0;
	for (var i = 0; i < a[1].length; i++) {
		mf += parseFloat(a[1].charAt(i)) * Math.pow(2, -(i + 1));
	}
	m = parseInt(mi) + parseFloat(mf);
	if (s == 1) {
		m = 0 - m;
	}
	return m;
}

function FillString(t, c, n, b) {
	if ((t == "") || (c.length != 1) || (n <= t.length)) {
		return t;
	}
	var l = t.length;
	for (var i = 0; i < n - l; i++) {
		if (b == true) {
			t = c + t;
		}
		else {
			t += c;
		}
	}
	return t;
}
發佈了73 篇原創文章 · 獲贊 14 · 訪問量 8萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章