我必须将一个十六进制整数的字节数组发送到BLE设备。每当我尝试使用 0x 表示法时,存储在字节数组中的内部值将转换为十进制值。
var foo : [Byte] = [0xff, 0xD9]
实际上存储为[255, 217]
我应该使用什么数据结构使其保持十六进制格式?
答案 0 :(得分:1)
您将字节保留在字节数组中,它们的含义取决于您的解释。那么你要保留的是base10中的值为255和217的字节以及base16中的0xFF和0xD9。实际上它们在base2中保持为1111 1111和1101 1001。 (Computer number format)
您可以安全地发送字节数组而无需任何更改。
如果你想用十六进制打印你的字节,你可以使用这样的东西:
println (foo.map { String($0, radix: 16, uppercase: false) })