> 웹 프론트엔드 > JS 튜토리얼 > JavaScript는 부동 소수점 숫자를 16진수 문자로 변환합니다.javascript 기술

JavaScript는 부동 소수점 숫자를 16진수 문자로 변환합니다.javascript 기술

WBOY
풀어 주다: 2016-05-16 17:18:21
원래의
1772명이 탐색했습니다.

최근 임베디드 프로젝트에는 WEB 기능이 필요했기 때문에 HTML JavaScript를 사용하여 일부 매개변수 구성 기능을 구현하려고 생각했습니다. 매개변수는 JavaScript에 의해 16진수 데이터로 생성되고 POST를 통해 마이크로 컨트롤러에 제출된 다음 직접 사용되어 컴퓨팅 성능을 최대한 활용합니다. 브라우저.

부동 소수점 숫자에 대한 JavaScript의 취약한 지원으로 인해 부동 소수점 숫자를 16진수로 변환하는 함수를 직접 사용하면 C 언어에서 일반적으로 구현되는 4바이트 저장 표현을 얻을 수 없습니다. 이 함수는 Node.js의 Buffer 클래스에서 구현할 수 있지만 사용할 방법이 없고(마이크로 컨트롤러의 저장 공간이 제한되어 있음) 구현 방법을 알 수 있는 방법도 없습니다(저는 이해할 수 없습니다).

예:

123.456 ==》 0x42F6E979 C 언어에서는 부동 소수점 숫자를 부호 없는 정수로 변환한 후 16진수로 출력하면 됩니다. JavaScript에서는 덜 간단합니다.

다행히 인터넷에서 C#으로 구현된 IEEE754 표준 부동 소수점 숫자 변환 코드(IEEE754 부동 소수점 숫자 변환기(C# 구현), 링크를 열려면 클릭)를 찾아 변환하여 이 작업을 완료했습니다. 이 코드를 JavaScript로 변환하세요. 이를 위해 코드를 게시하고 공유하세요.

그리고 16진법으로의 변환만 구현하고 C# 코드에서도 가능한 반전(역코드)은 구현하지 않았습니다.

다음 코드를 사용하여 다음을 달성할 수 있습니다.
get_float_hex(123.456) ==> 42F6E979

코드 복사 코드는 다음과 같습니다.

function DecToBinTail(dec, pad)
{
var bin = " ";
var i ;
for (i = 0; i < pad; i )
{
dec *= 2;
if (dec>= 1)
{
dec -= 1 ;
bin = "1";
}
else
{
bin = "0"; bin;
}
function DecToBinHead(dec,pad)
{
var bin="";
var i
for (i = 0; i < pad; i )
{
bin = (parseInt(dec % 2).toString()) bin
dec /= 2
}
return bin; get_float_hex(decString)
{
var dec = decString;
var sign;
var signString
var decValue = parseFloat(Math.abs(decString))
if .toString().charAt( 0) == '-')
{
sign = 1;
signString = "1"
}
else
{
sign = 0;
signString = "0";
}
if (decValue==0)
{
fraction = 0
}
else
{
var 지수 = 127;
if (decValue>=2)
{
while (decValue>=2)
{
지수 ; >decValue /= 2; }
}
else if (decValue<1)
{
while (decValue < 1)
{
지수--; 🎜>decValue *= 2;
if (지수 ==0)
break;
}
}
if (지수!=0) decValue-=1; ;

}
varfractionString = DecToBinTail(decValue, 23);
var expontString = DecToBinHead(exComponent, 8)
return Right('00000000'parseInt(signString expontStringfractionString, 2) ).toString(16), 8)

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 이슈
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿