>  기사  >  웹 프론트엔드  >  nodejs 버퍼를 숫자로

nodejs 버퍼를 숫자로

WBOY
WBOY원래의
2023-05-17 12:12:37792검색

Nodejs는 서버 측 프로그래밍에서 널리 사용되는 매우 강력한 백엔드 JavaScript 솔루션입니다. 버퍼 유형도 Nodejs의 중요한 기능 중 하나입니다.

Nodejs에서 Buffer 객체는 주로 바이너리 데이터를 처리하는 데 사용되므로 일반적으로 네트워크 통신 및 데이터 지속성(예: 파일 읽기 및 쓰기)과 같은 시나리오에 사용됩니다.

실제 작업을 하다보면 자바스크립트에서 Buffer형 데이터를 숫자형으로 변환해야 하는 상황을 자주 접하게 되는데, 이번 글에서는 이 문제에 대한 해결책을 소개하겠습니다.

  1. 버퍼를 십진수로 변환

Nodejs에서는 이진 데이터를 십진수로 변환하는 것이 매우 쉽습니다. Buffer 클래스의 readInt 메서드를 사용하면 됩니다. readInt 메소드가 지원하는 매개변수에는 바이트 수, 오프셋 및 부호 없는 정수 사용 여부가 포함됩니다.

예를 들어 8바이트 Buffer 유형 데이터의 경우 다음 명령문을 사용하여 이를 10진수로 변환할 수 있습니다.

let buffer = Buffer.from([0x12, 0x34, 0x56, 0x78, 0x90, 0xAB, 0xCD, 0xEF]); 
let number = buffer.readIntBE(0, 8); 
console.log(number); //输出为78187493520

위 코드에서 Buffer.from 메서드는 길이는 8바이트입니다. 그런 다음 readIntBE 메소드를 사용하여 이를 10진수로 처리합니다.

  1. 버퍼를 16진수로 처리

버퍼 데이터를 10진수로 처리하는 것 외에도 16진수로 처리할 수도 있습니다. 이는 Nodejs와 함께 제공되는 toString 메소드를 통해 달성할 수 있습니다.

let buffer = Buffer.from([0x12, 0x34, 0x56, 0x78, 0x90, 0xAB, 0xCD, 0xEF]); 
let hex = buffer.toString('hex');
console.log(hex); // 输出为:1234567890abcdef
  1. 빅엔디안 및 리틀엔디안 순서 처리

Buffer 객체를 숫자로 처리할 때 데이터의 바이트 순서를 고려해야 한다는 점에 유의하세요. 일반적으로 데이터의 소스 및 사용 요구 사항에 따라 데이터의 바이트 순서를 결정해야 합니다.

Nodejs에서는 일반적인 BE 및 LE 메서드를 사용하여 바이트 순서를 결정할 수 있습니다. BE는 빅 엔디안 순서를 나타내고, LE는 리틀 엔디안 순서를 나타냅니다.

BE: 높은 바이트에서 낮은 바이트 순서로, 즉 높은 바이트가 먼저, 낮은 바이트가 마지막에 데이터를 저장합니다.
LE: 낮은 바이트에서 높은 바이트 순서로, 즉 낮은 바이트가 먼저, 높은 바이트가 마지막에 데이터를 저장합니다.

예를 들어 2바이트 버퍼 데이터의 경우 하나는 BE이고 하나는 LE입니다.

let BE_Buffer = Buffer.from([0x12, 0x34]);
let LE_Buffer = Buffer.from([0x34, 0x12]);

console.log(BE_Buffer.readIntBE(0, 2)); // 输出为: 4660
console.log(BE_Buffer.readUIntBE(0, 2)); // 输出为: 4660

console.log(LE_Buffer.readIntLE(0, 2)); // 输出为: 4660
console.log(LE_Buffer.readUIntLE(0, 2)); // 输出为: 4660
  1. Summary

JavaScript에서 버퍼 유형 데이터를 숫자 유형으로 변환하는 것은 Nodejs에서 일반적으로 사용되는 작업 중 하나입니다. . 다양한 디코딩 방법을 사용하면 데이터의 바이트 순서, 크고 작은 엔디안 및 기타 속성을 정확하게 식별하고 숫자로 변환할 수 있으므로 전송, 저장, 읽기 등의 과정에서 데이터의 정확성이 보장됩니다.

위 내용은 이번 글에서 소개한 Nodejs에서 Buffer형을 숫자형으로 변환하는 방법입니다. 모두에게 도움이 되었으면 좋겠습니다.

위 내용은 nodejs 버퍼를 숫자로의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.