c - 用于蓝牙传输的 Ruby 字符数组到字节数组(十六进制字符)
问题描述
我应该将一个字节数组(我猜是字符串的 c 术语?)传递给用于蓝牙通信的 api。我要传递的是这个数组,作为字符串加入:
["\xA6", "\x9E", "\x00", "\x14", "\x00", "\x8E", "\x00", "{", "\"", "s", "i", "t", "e", "_", "n", "a", "m", "e", "\"", ":", "1", "1", "5", "8", "5", "4", "}", "\xF5"]
然而,这无声无息地失败了,预期的格式似乎是:
a69e0014008e007b22736974655f6e616d65223a3131353835347df5
我可以看到 Ruby 有一个字符串方法 bytes.to_a 这会给我
[166, 158, 0, 20, 0, 142, 0, 123, 34, 115, 105, 116, 101, 95, 110, 97, 109, 101, 34, 58, 49, 49, 53, 56, 53, 52, 125, 245]
但我想提取每个字节的十六进制值,然后 .join 它们。有没有一种简单的方法可以实现这一目标?还是我错误地接近这个!
解决方案
给定一个二进制字符串:
s = "\xA6\x9E\x00\x14\x00\x8E\x00{\"site_name\":115854}\xF5"
您可以unpack1
与H*
(十六进制字符串,高半字节优先)一起使用:
s.unpack1('H*') #=> "a69e0014008e007b22736974655f6e616d65223a3131353835347df5"
推荐阅读
- python - 无法在 Flask 应用程序和 rasa_nlu.server 之间初始化持久化器
- oauth - 谷歌操作的帐户链接
- javascript - 使用 Axios 发布错误 404 的方法。ReactJS
- php - PHP 致命错误:无法重新声明之前在另一个文件中声明的函数。
- javascript - 运行测试时 Mocha 无法识别全局变量
- file - 如何从 Jupyter notebook 下载机器学习模型?
- python - Can't run any ipynb files using Jupyter Lab or Jupyter Notebook (FileNotFoundError: [WinError 2] The system cannot find the file specified)
- mysql - Docker - 无法连接到远程数据库
- php - 嗨,关于 wordpress require_once
- validation - 如何使用 XPath 确认逗号是否存在于数字中?