将十六进制整数存储在 Swift 字节数组中(保留十六进制格式)

Store hexadecimal integers in byte array in Swift (retaining hex format)

我必须将十六进制整数的字节数组发送到 BLE 设备。每当我尝试使用 0x 表示法时,存储在字节数组中的内部值都会转换为十进制值。

var foo : [Byte] = [0xff, 0xD9] 实际上存储为 [255, 217]

我应该使用什么数据结构来使其保持十六进制格式?

您将 字节 保存在一个字节数组中,它们的含义取决于您的解释。所以你保留的是 base10 中的值 255 和 217 的字节以及 base16 中的 0xFF 和 0xD9。它们实际上在 base2 中保存为 1111 1111 和 1101 1001。 (Computer number format)

您可以安全地发送您的字节数组,无需任何更改。

如果你想以十六进制打印出你的字节,你可以使用这样的东西:

println (foo.map { String([=10=], radix: 16, uppercase: false) })