【发布时间】:2015-10-26 18:43:39
【问题描述】:
我正在 Xcode 中创建一个 Swift 应用程序,该应用程序向 BLE 适配器发送命令,以使与其连接的 LED 变为不同的颜色。
正如我从对 SO 上一篇文章的回复中确定的那样,我必须以数组中的十六进制整数形式发送命令。我正在使用以下代码来执行此操作:
let bytes : [UInt8] = [ 0x52, 0x13, 0x00, 0x56, 0xFF, 0x00, 0x00, 0x00, 0xAA ]
let data = NSData(bytes: bytes, length: bytes.count)
因此,这需要上面建议的 UInt8 表单。
但是,我正在尝试在我的 Swift 应用程序上使用滑块作为颜色选择器,以便设置连接到 BLE 接收器的 LED 灯条的 R、G 和 B 颜色。为了做到这一点,我分别为 R、G 和 B 创建了三个滑块,将每个滑块的最小值设置为 0,最大值设置为 255(因为 255 转换为十六进制的 FF)。然后我使用以下函数将这些转换为十六进制形式,以便我在上面的命令中实现。
func colorToHex(input: Int) -> UInt8 {
var st = NSString(format: "%2X", input)
return st
}
问题在于我必须再次返回一个 UInt8 值。由于 'st' 是一个 NSString,Xcode 会抛出 'NSString not convertible to UInt8' 的错误。
我对 Swift 还很陌生。这里的问题是,如何让函数返回 UInt8 值,如何让函数形成 UInt8 值?
任何帮助将不胜感激!
【问题讨论】:
-
您的问题不清楚。当输入为
255时,你想要的是255作为UInt8?或[70, 70]([0x46, 0x46]) 是"FF"的CString 表示? -
对于这里不清楚的问题,我深表歉意。例如,我想要的是,如果滑块移动到最大值 (255),那么我希望它以某种方式转换为 0xFF,以便可以将其添加到字节数组中。类似地,如果它在滑块上设置为 150,它将被转换为 0x96,这样它也可以输入到字节数组中。它需要是 UInt8 格式。
标签: ios swift bluetooth nsdata uint8t