在Javascript中,如何将int值转换为特定的字节,然后与字符串组合
In Javascript, how to convert a int value to a certain bytes and then combine with a string?
使用网络的write
方法时。在Node.js中,该方法只接受字符串值。
现在我有一个规则的套接字消息:4字节的消息长度+消息正文。例如,信息="你说得对",那么长度=17。
我不知道如何形成这个信息。目前我使用以下代码,但当消息长度>128时,接收套接字解析错误。
function sendMessage(data) {
var length = data.length + 4;
var lenArray = new Uint8Array(4);
lenArray[0] = length >>> 24;
lenArray[1] = length >>> 16;
lenArray[2] = length >>> 8;
lenArray[3] = length;
var arrayBuffer = new Uint8Array(length);
arrayBuffer.set(lenArray);
var dataArray = str2ab(data);
arrayBuffer.set(dataArray, 16);
var dataSend = ab2str(arrayBuffer);
client.write(dataSend);
}
function str2ab(str) {
var buf = new ArrayBuffer(str.length);
var bufView = new Uint8Array(buf);
for (var i=0, strLen=str.length; i<strLen; i++) {
bufView[i] = str.charCodeAt(i);
}
return bufView;
}
function ab2str(buf) {
return String.fromCharCode.apply(null, new Uint8Array(buf));
}
使用Node.js提供的Buffer class可以解决这个问题。
function sendBuffer(data) {
var length = Buffer.byteLength(data)+32;
var headBuf = new Buffer(4);
headBuf.writeUInt32BE(length);
var bodyBuf = new Buffer(length);
headBuf.copy(bodyBuf,0,0,headBuf.length);
bodyBuf.write(data, headBuf.length+12);
console.log(bodyBuf);
client.write(bodyBuf);}
相关文章:
- 根据id将json数组组合为一个json数组
- 接受不在列表中的值-引导组合框
- 从客户端获取修改后的对象,并将其与服务器上的原始对象组合
- 本地存储中的字符串到字节数组转换
- 组合两个javascript函数
- Telerik rad组合框多列数据绑定
- 组合 2 个 JavaScript .scroll 函数
- 如何使用jquery组合两个数组
- onChange不足以从Dojo组合框触发查询
- 组合承诺和非承诺值
- 所有控件的组合框
- 在D3中组合多个事件
- 什么's导致了512字节的限制-openkeyval或其他什么
- AngularJS-如何只对多个事件的组合采取行动
- 如何在服务、技能、投资组合等方面添加滑动效果
- 以编程方式填充组合框道场 (1.8) 的最佳方法是什么?
- 如何在谷歌可视化中组合数字和模式格式化程序
- 如何在 Javascript 中将 4 个字节组合成浮点值
- Javascript-具有所有可能组合的字节字符串
- 在Javascript中,如何将int值转换为特定的字节,然后与字符串组合