>  기사  >  웹 프론트엔드  >  바이너리 데이터를 조작하기 위한 js 메소드 요약

바이너리 데이터를 조작하기 위한 js 메소드 요약

php中世界最好的语言
php中世界最好的语言원래의
2018-04-12 13:36:331710검색

이번에는 js에서 바이너리 데이터를 연산하는 방법에 대해 요약해보겠습니다. js에서 바이너리 데이터를 연산할 때 주의사항은 무엇인가요? 실제 사례를 살펴보겠습니다.

나는 최근에 js를 사용하여 바이너리 데이터를 조작하고 소켓과 백그라운드를 통해 전송하는 여러 프로젝트를 수행했습니다. 블로그를 이용해 여기에 기록하세요

먼저 새 소켓을 만듭니다.

var socket=new WebSocket("ws://192.168.0.147");

그런 다음 소켓이 열리고 연결된 후 실행될 함수를 정의합니다.

Websocket에는 "blob" 또는 "arraybuffer"로 설정할 수 있는 BinaryType 속성이 있습니다. 기본 형식은 "blob"입니다. 결과적으로 프로젝트 작업 중에 이를 "arraybuffer"로 설정하는 것을 잊어버렸습니다. 아래 데이터를 받을 때 Blob 객체를 사용하세요.

rreee

다음은 bype로 변환되어 전송됩니다:

socket.onopen=function(){
 //发送登录帧,4-20位为手机号
 var loginArr=[0X02,0X02,0X00,0X1E,0X20,0X20,0X20,0X20,0X20,0X20,0X20,0X20,0X20,0X20,0X20,0X20,0X20,0X20,0X20,0X20,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X0D,0X0A]        
}

전송 프로세스는 대략 다음과 같습니다. 먼저 새 ArrayBuffer 개체를 만듭니다. 이 개체는 버퍼 길이 매개 변수를 채워야 합니다. 자세한 내용은 api==> https://msdn.microsoft.com/zh-cn을 참조하세요. /library/br212474(v =vs.94).aspx,

그런 다음 새 DataView 객체를 만들고 ArrayBuffer를 전달합니다. 그런 다음 DataView의 setUint 및 getUint 메서드를 사용하여 비트를 읽고 설정합니다. 자세한 내용은 api==> https://msdn.microsoft.com/zh-cn/library/br212463(v=vs.94).aspx

을 참조하세요. 수신 데이터 처리는 다음과 같습니다.

var loginBuffer=new ArrayBuffer(30);
var loginDataview=new DataView(loginBuffer);
//localstorageuserinfo为缓存在本地的用户手机号
var telArr=localstorageuserinfo.TelPhone; 
var loginTime=tempTrans();
for(var i=0;i<loginArr.length;){
 loginDataview.setInt8(i,loginArr[i]);
 if(i>3&&i<(telArr.length+4)){
   loginDataview.setInt8(i,telArr.charCodeAt(i-4));
 }   
 if(i>19&&i<loginArr.length-2){
  loginDataview.setInt8(i,loginTime[i-20]);
 }
 i++;
}
//登录包
socket.send(loginDataview.buffer);   
//格式化时间同时按照年俩位月日时分秒1位由高到底排序
function tempTrans(time){
 if(!time){
  time=new Date();
 }
 var u32Dataview=new DataView(new Uint16Array([time.getFullYear()]).buffer);
 var uint8=[];
 uint8.push(new DataView(new Uint8Array([0X00]).buffer).getUint8(0))
 for(var i=u32Dataview.byteLength-1;i>=0;i--){
  uint8.push(u32Dataview.getUint8(i))
 }
 uint8.push(new DataView(new Uint8Array([time.getMonth()+1]).buffer).getUint8(0));
 uint8.push(new DataView(new Uint8Array([time.getDate()]).buffer).getUint8(0));
 uint8.push(new DataView(new Uint8Array([time.getHours()]).buffer).getUint8(0));
 uint8.push(new DataView(new Uint8Array([time.getMinutes()]).buffer).getUint8(0));
 uint8.push(new DataView(new Uint8Array([time.getSeconds()]).buffer).getUint8(0));
 return uint8;
}

문자열로 변환한 후에는 원하는 대로 할 수 있습니다.

이 기사의 사례를 읽은 후 방법을 마스터했다고 생각합니다. 더 흥미로운 정보를 보려면 PHP 중국어 웹사이트의 다른 관련 기사를 주목하세요!

추천 자료:

Vue 구성 요소 개발을 위한 팁은 무엇인가요?

AngularJS에서 @HostBinding()과 @HostListener()의 차이점

위 내용은 바이너리 데이터를 조작하기 위한 js 메소드 요약의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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