Javascript 类型转换问题

Javascript 类型转换问题,javascript,node-red,Javascript,Node Red,我正在使用这个函数。 我有一根像这样的绳子: {"txpk":{"imme":false,"tmst":145559484,"freq":869.525,"rfch":0,"powe":27,"modu":"LORA","datr":"SF9BW125","codr":"4/5","ipol":true,"size":17,"data":"YA0iASalAAADMf8AAbKwI3I="}} 这就是信息。有效负载进入功能块 我只想在字符串前面添加一些字节: buf = new Buffer(

我正在使用这个函数。 我有一根像这样的绳子:

{"txpk":{"imme":false,"tmst":145559484,"freq":869.525,"rfch":0,"powe":27,"modu":"LORA","datr":"SF9BW125","codr":"4/5","ipol":true,"size":17,"data":"YA0iASalAAADMf8AAbKwI3I="}}
这就是信息。有效负载进入功能块

我只想在字符串前面添加一些字节:

buf = new Buffer('buff');
buf1 = new Buffer ('0000');

buf[0]=0x02;
buf[1]=0xbd;
buf[2]=0x45;
buf[3]=0x03;

buf1= msg.payload;
msg.payload = buf+buf1;
return [null,msg];
结果如下,以十六进制书写:

02 EF BF BD 45 03 7B 22 74 78 70 6B 22 3A 7B 22 69 6D 6D 65 22 3A 66 61 6C 73 65 2C 22 74 6D 73 74 22 3A 31 34 35 35 35 39 34 38 34 2C 22 66 72 65 71 22 3A 38 36 39 2E 35 32 35 2C 22 72 66 63 68 22 3A 30 2C 22 70 6F 77 65 22 3A 32 37 2C 22 6D 6F 64 75 22 3A 22 4C 4F 52 41 22 2C 22 64 61 74 72 22 3A 22 53 46 39 42 57 31 32 35 22 2C 22 63 6F 64 72 22 3A 22 34 2F 35 22 2C 22 69 70 6F 6C 22 3A 74 72 75 65 2C 22 73 69 7A 65 22 3A 31 37 2C 22 64 61 74 61 22 3A 22 59 41 30 69 41 53 61 6C 41 41 41 44 4D 66 38 41 41 62 4B 77 49 33 49 3D 22 7D 7D 22 3B 0A
而不是:

02 BD 45 03 
我在第一个字节看到:

02 EF BF BD 45 03 

有人能解释一下我做错了什么吗?

您正试图用字符串连接缓冲区对象-这就是问题的原因。最好将字符串转换为缓冲区,然后使用Buffer.concat连接它们:

buf = new Buffer('buff');
buf1 = new Buffer (msg.payload);

buf[0]=0x02;
buf[1]=0xbd;
buf[2]=0x45;
buf[3]=0x03;

msg.payload = Buffer.concat([buf, buf1]);
return [null,msg];

对于您的第一个贡献,看起来是javascript而不是java。我试图把拼写和语法弄清楚,但还是把你的作业丢了。