Swift中如何将0x01转换为字节数组并转为NSData类型
在Swift中将"0x01"转换为字节数组并转为NSData的方法
步骤说明
- 移除十六进制字符串的
0x前缀,提取纯十六进制字符 - 将纯十六进制字符串转换为
UInt8类型的单字节数值 - 将数值存入字节数组
- 把字节数组转换为
NSData
代码实现
// 原始输入的十六进制字符串 let hexInput = "0x01" // 移除"0x"前缀,获取纯十六进制部分 let pureHex = String(hexInput.dropFirst(2)) // 转换为UInt8类型(校验字符串是否为有效十六进制格式) guard let singleByte = UInt8(pureHex, radix: 16) else { // 处理转换失败的情况,比如输入格式错误 print("Invalid hex string format") return } // 构造字节数组 let byteArray: [UInt8] = [singleByte] // 转换为NSData let nsData = NSData(bytes: byteArray, length: byteArray.count)
简化写法(利用Swift Data桥接)
Swift的Data类型可直接与NSData桥接,也可以这样实现:
let swiftData = Data([singleByte]) let nsData = NSData(data: swiftData)
额外处理(适配无前缀的情况)
如果输入字符串可能没有0x前缀,可以增加前缀判断逻辑:
let pureHex: String if hexInput.hasPrefix("0x") { pureHex = String(hexInput.dropFirst(2)) } else { pureHex = hexInput }
内容的提问来源于stack exchange,提问作者Anjali
相关产品推荐
相关产品推荐

