javascript - 在 Node.js (Javascript) 中将十六进制转换为文本 (ASCII) 或 JSON 对象

标签 javascript json node.js object hex

我正在从硬件接收十六进制并尝试使用 Node.js (Javascript) 将其转换为 json 对象

接收数据

50 4F 53 54 20 2F 77 69 66 69 20 48 54 54 50 2F 31 2E 31 0D 0A 48 6F 73 74 3A 20 35 32 2E 31 35 2E 36 34 2E 33 34 3A 38 30 38 30 0D 0A 43 6F 6E 74 65 6E 74 2D 54 79 70 65 3A 61 70 70 6C 69 63 61 74 69 6F 6E 2F 6A 73 6F 6E 3B 20 63 68 61 72 73 65 74 3D 75 74 66 2D 38 0D 0A 43 6F 6E 74 65 6E 74 2D 4C 65 6E 67 74 68 3A 20 38 33 35 0D 0A 0D 0A 7B 22 72 6F 75 74 65 5F 6D 61 63 22 3A 22 46 43 35 39 36 37 33 36 44 46 32 33 22 2C 22 64 65 76 69 63 65 73 22 3A 5B 7B 22 6D 61 63 22 3A 22 34 34 34 42 39 41 36 43 35 43 38 38 22 2C 22 64 61 74 61 22 3A 22 30 32 30 31 31 41 30 41 46 46 34 43 30 30 31 30 30 35 30 42 31 30 43 39 30 39 41 42 22 2C 22 72 73 73 69 22 3A 2D 33 35 7D 2C 7B 22 6D 61 63 22 3A 22 30 38 44 46 31 46 39 39 46 38 42 37 22 2C 22 64 61 74 61 22 3A 22 30 32 30 31 30 32 30 33 30 33 42 45 46 45 30 44 46 46 31 30 30 31 34 30 30 43 30 31 34 31 46 34 35 43 38 39 41 45 34 43 31 45 22 2C 22 72 73 73 69 22 3A 2D 36 35 7D 2C 7B 22 6D 61 63 22 3A 22 44 37 32 42 44 36 45 35 39 44 46 35 22 2C 22 64 61 74 61 22 3A 22 30 32 30 31 30 36 31 41 46 46 34 43 30 30 30 32 31 35 46 37 38 32 36 44 41 36 34 46 41 32 34 45 39 38 38 30 32 34 42 43 35 42 37 31 45 30 38 39 33 45 31 32 33 34 35 36 37 38 42 33 22 2C 22 72 73 73 69 22 3A 2D 38 31 7D 2C 7B 22 6D 61 63 22 3A 22 44 38 34 36 39 34 31 39 31 30 34 36 22 2C 22 64 61 74 61 22 3A 22 30 32 30 31 30 34 31 42 46 46 34 43 30 30 30 32 31 35 45 42 45 46 44 30 38 33 37 30 41 32 34 37 43 38 39 38 33 37 45 37 42 35 36 33 34 44 46 35 32 34 31 31 31 31 30 30 30 30 43 35 35 44 22 2C 22 72 73 73 69 22 3A 2D 33 34 7D 2C 7B 22 6D 61 63 22 3A 22 44 39 36 30 41 44 44 38 30 43 33 37 22 2C 22 64 61 74 61 22 3A 22 30 32 30 31 30 34 31 42 46 46 34 43 30 30 30 32 31 35 45 42 45 46 44 30 38 33 37 30 41 32 34 37 43 38 39 38 33 37 45 37 42 35 36 33 34 44 46 35 32 34 44 38 41 44 45 37 30 43 43 42 35 45 22 2C 22 72 73 73 69 22 3A 2D 33 30 7D 2C 7B 22 6D 61 63 22 3A 22 44 35 46 32 46 43 32 36 31 38 39 45 22 2C 22 64 61 74 61 22 3A 22 30 32 30 31 30 35 30 32 30 41 30 30 30 33 30 33 45 37 46 45 30 39 46 46 34 45 41 42 44 35 46 32 46 43 32 36 31 38 39 45 30 35 30 39 34 38 35 37 33 30 33 31 22 2C 22 72 73 73 69 22 3A 2D 37 39 7D 2C 7B 22 6D 61 63 22 3A 22 43 46 39 43 44 44 36 38 46 33 44 46 22 2C 22 64 61 74 61 22 3A 22 30 32 30 31 30 34 31 42 46 46 34 43 30 30 30 32 31 35 45 42 45 46 44 30 38 33 37 30 41 32 34 37 43 38 39 38 33 37 45 37 42 35 36 33 34 44 46 35 32 34 31 31 31 31 45 30 30 30 43 35 35 43 22 2C 22 72 73 73 69 22 3A 2D 33 35 7D 2C 7B 22 6D 61 63 22 3A 22 43 37 34 30 36 42 34 34 36 38 33 30 22 2C 22 64 61 74 61 22 3A 22 30 32 30 31 30 34 31 42 46 46 34 43 30 30 30 32 31 35 45 42 45 46 44 30 38 33 37 30 41 32 34 37 43 38 39 38 33 37 45 37 42 35 36 33 34 44 46 35 32 34 31 31 31 31 45 30 30 30 43 35 35 45 22 2C 22 72 73 73 69 22 3A 2D 34 30 7D 5D 2C 22 61 6C 6C 43 6F 75 6E 74 22 3A 38 7D 0D 0A 0D 0A 

我试过这个和其他一些方法但没有得到预期的输出

function hex2a(hexx) {
var hex = hexx.toString();//force conversion
var str = '';
for (var i = 0; i < hex.length; i += 2)
    str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));
return str;}

如果我使用 http://www.asciitohex.com/ 然后接收正确的输出。

这是

POST /wifi HTTP/1.1 Host: 52.15.64.34:8080 Content-Type:application/json; charset=utf-8 Content-Length: 835

{"route_mac":"FC596736DF23","devices":[{"mac":"444B9A6C5C88","data":"02011A0AFF4C0010050B10C909AB","rssi":-35},{"mac":"08DF1F99F8B7","data":"0201020303BEFE0DFF1001400C0141F45C89AE4C1E","rssi":-65},{"mac":"D72BD6E59DF5","data":"0201061AFF4C000215F7826DA64FA24E988024BC5B71E0893E12345678B3","rssi":-81},{"mac":"D84694191046","data":"0201041BFF4C000215EBEFD08370A247C89837E7B5634DF52411110000C55D","rssi":-34},{"mac":"D960ADD80C37","data":"0201041BFF4C000215EBEFD08370A247C89837E7B5634DF524D8ADE70CCB5E","rssi":-30},{"mac":"D5F2FC26189E","data":"020105020A000303E7FE09FF4EABD5F2FC26189E050948573031","rssi":-79},{"mac":"CF9CDD68F3DF","data":"0201041BFF4C000215EBEFD08370A247C89837E7B5634DF5241111E000C55C","rssi":-35},{"mac":"C7406B446830","data":"0201041BFF4C000215EBEFD08370A247C89837E7B5634DF5241111E000C55E","rssi":-40}],"allCount":8}

最佳答案

您应该首先从 HEX 字符串中删除空格:

str = str.replace(/\s/g, '');

之后你就可以使用你的函数了。

关于javascript - 在 Node.js (Javascript) 中将十六进制转换为文本 (ASCII) 或 JSON 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47408691/

相关文章:

javascript - Colorbox 将图像显示为二进制数据

javascript - 访问 HTMLCollection/NodeList 中的每个元素

javascript - 为什么我在 ajax 响应开始时得到 �?

node.js - 应该按请求创建 OAuth2Client 还是按用户缓存?

node.js - Nginx 配置 : Two domain names for one nodeJS app

javascript - Node.js 在服务器运行时删除路由

javascript - jQuery 在 IE10 中未触发

javascript - 在我的 React.js 应用程序中导入 D3.js 库时出错

json - 将特定 JSON 字段从 .responseText 提取到单个 Excel 单元格

javascript - .txt 文件和 .json 文件是否同样适用于存储 javascript 对象?