Directorio de artículos
Tipo de datos JS
JS
Es un lenguaje de tipo débil. Sus tipos de datos incluyen valores de cadena, valores numéricos, valores booleanos, matrices y objetos. Aunque nuestros tipos numéricos incluyen enteros en coma flotante, etc., aquí se los denomina colectivamente 数值类型
. Al mismo tiempo JavaScript
tiene un tipo dinámico, sin especificar cuándo definimos el tipo de datos de la variable. Esto también significa que nuestra conversión forzada no será válida en JS.
Si C/C++
se puede lograr mediante la conversión de memoria o complejo. Pero JavaScript
estos métodos son ineficaces (también, o no sé cómo girar demasiado cai).
IEEE754
Ahora se reconoce como la operación de conversión de punto flotante estándar más utilizada, por muchos CPU
utilizados por la unidad de punto flotante.
IEEEE475
Luego miramos primero IEEEE475
el Float
formato, hay 32bit
para el almacenamiento de datos, específico dividido de la siguiente manera:
Aquí tomamos 0x4128BC90
como ejemplo para explicar:
0x4128BC90(H) = 01000001001010001011110010010000(B)
Signo (bit de signo)
0
Mostrar número positivo1
Representa un número negativo
Exponente (exponente bit)
1000 0010(B) = 130 (D)
Significand (lugares decimales)
01010001011110010010000(B) = 0*2^(-1) + 1*2^(-2) + ... + 0*2^(-23)
Fórmula de conversión
F un (x) = (- 1) S ign × (1 + S ignificando) × (2) E xponente - 127 Fun (x) = (-1) ^ {Sign} \ times (1 + Significando) \ times ( 2) ^ {Exponente - 127} F u n ( x )=( - 1 )S i g n×( 1+S i g n i f i c a n d )×( 2 )E x p o n e n t - 1 2 7
Método de conversión
var bytes = new Array();
bytes[0] = 65;
bytes[1] = 40;
bytes[2] = 188;
bytes[3] = 144;
//IEEE754
function hex2float(num) {
//符号位
var sign = (num & 0x80000000) ? -1 : 1;
//指数位
var exponent = ((num >> 23) & 0xff) - 127;
//尾数位
var mantissa = 1 + ((num & 0x7fffff) / 0x7fffff);
return sign * mantissa * Math.pow(2, exponent);
}
//拼接为number对象
var mfloat = ((bytes[0] & 0xFF) << 24) |
((bytes[1] & 0xFF) << 16) |
((bytes[2] & 0xFF) << 8) |
(bytes[3] & 0xFF);
console.log(hex2float(mfloat));
Herramientas online
Las siguientes son dos herramientas en línea que recomiendo personalmente y que son muy adecuadas para la verificación:
Flotante (IEEE754 de precisión simple de 32 bits)
Conversor base en línea_ conversión de punto flotante
Referencia gracias
Conversión de hexadecimal a flotante en javascript
Fundamentos informáticos: conversión de números de punto flotante estándar IEEE754