我试图将一个整数存储到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());
但是要求指出我应该发送整数或浮点数而不将其转换为字符串。这可能吗?我有什么想法我做错了吗?提前谢谢。
答案 0 :(得分:2)
当你这样做时:
buf.writeUInt8('0x' + num, 0);
你已经通过将它与'0x' + num
中的另一个字符串连接而将其转换为字符串,所以无论你以后做什么,它都已经转换为字符串 - 可能是一个错误的字符串,因为你'将十六进制前缀重新添加到默认情况下转换为小数的数字。
你在这里做的是一种非常复杂和错误的序列化数字的方式,可以很容易地作为JSON传输。