Javascript转换十六进制值错误

时间:2016-08-25 22:30:06

标签: javascript node.js

我不知道怎么可能,但是当我使用以下方式执行转换时:

String.fromCharCode(buffer[i])它正在转换为这样一个奇怪的值:

如果我传递值:179(十进制),当我检查此代码生成的十六进制值时,它生成值194(C2十六进制)。

我有点困惑,因为我不知道为什么会发生这种情况。

以下是代码:

if ((topic != "") && (message != "")){

      var buffer = "";

      buffer = message.split(",");
      console.log("Buffer: " + buffer);
      // &#
      var msg = "";

      for (i = 0;i < buffer.length;i++){
          msg = msg + String.fromCharCode(0 + buffer[i]);
      }

      client.publish(topic, msg);

  }

观察:

当我传递值&lt; 127它就像一个魅力,但价值观>它不起作用。

如果有人帮助我更好地了解它是如何运作的,我会感激不尽。

1 个答案:

答案 0 :(得分:0)

我使用此解决方案解决了我的问题:

if ((topic != "") && (message != "")){

      var buffer = "";

      buffer = message.split(",");
      console.log("Buffer: " + buffer);

      var sendBuffer = new Buffer(27);

      for (i = 0; i < buffer.length; i++){

          sendBuffer[i] = buffer[i];

      }

      var messageBuffer = new Buffer(sendBuffer);

      // &#

      client.publish(topic, messageBuffer);

  }