我用tcp收到的消息和发送的消息在经过buffer转换后数据却丢失了一部分,问题原因就在于中间有一个换行符,\r ,没有这个一切正常,找了好久实在没有头绪,api也看了,没有相关资料,只能来这里请教老师们了,希望能帮我解答一下,十分感谢
‘\r’是回车符,回车的现象:“回到行的开始,继续输出,新输出的内容视觉上覆盖了旧内容”。 你代码的行为:先输出\vMSH,然后’\r’会回到行首,重新输出JIK,JIK在视觉上是覆盖了MSH的,你可以换成’MSGXXX\rJIK’试试,可以发现输出的是JIKXXX
这是 console 的 format 行为吧,数据其实没丢,你可以打印下 console.log({inspect() { return this.x }, x: 'yahaha'})
,还能给你输出 yahaha
呢,但是显然这个输出的对象值本身没有变。
@Shasharoman 毕竟是社区老师,确实如此,只是看上去像是数据丢失了而已,实际上Buffer对象是完整的,所有的信息都能拿到,是我思维太单一导致耽误了大量时间,谢谢您的回复
@hyj1991 嗯嗯,是的,是我思维单一了,还是社区的老师们厉害呀,么么哒
lz都输出了 data.length 难道没发现么~
另,Buffer应该是用 data.byteLength
吧