如何在客户端将Node.js缓冲区转换为整数?

时间:2017-03-06 11:01:23

标签: javascript node.js

我试图将一个整数存储到node.js缓冲区中,然后通过bleno将其发送到客户端:

var num = 24;
var buf = new Buffer(1);
buf.writeUInt8('0x' + num, 0);
//send buf using bleno

然后我使用以下代码将其转换为客户端的字符串:

function bytesToString(buffer) {    
  return String.fromCharCode.apply(null, new Uint8Array(buffer));
}

问题在于我没有得到原始价值(24)。相反,它返回的是'#'串。 我也尝试过这里的解决方案:Converting between strings and ArrayBuffers但我要么是中文字符还是unicode字符。

这是我之前在Node.js方面所做的事情,它在上面的bytesToString函数中没有任何问题:

new Buffer(num.toString());

但是要求指出我应该发送整数或浮点数而不将其转换为字符串。这可能吗?我有什么想法我做错了吗?提前谢谢。

1 个答案:

答案 0 :(得分:2)

当你这样做时:

buf.writeUInt8('0x' + num, 0);

你已经通过将它与'0x' + num中的另一个字符串连接而将其转换为字符串,所以无论你以后做什么,它都已经转换为字符串 - 可能是一个错误的字符串,因为你'将十六进制前缀重新添加到默认情况下转换为小数的数字。

你在这里做的是一种非常复杂和错误的序列化数字的方式,可以很容易地作为JSON传输。