Swift 二进制数据与16进制字符串的相互转换

物联网开发中经常用到的数据转换就是二进制数据与16进制字符串的相互转换,下面是相关代码:

extension String {
    /// 截取字符串
    /// - Parameter start: 起始索引(包含)
    /// - Parameter end: 结束索引(不包含)
    func substring(start: Int, end: Int) -> String {
        let firstIndex = index(startIndex, offsetBy: start)
        let lastIndex = index(startIndex, offsetBy: end)
        return String(self[firstIndex.. Data {
        let hex = self.replacingOccurrences(of: " ", with: "")
        var arr = Array()
        for i in 0.. String {
        return subdata2ascii(start: 0, end: self.count)
    }
    
    /// 转换成16进制字符串
    /// - Parameter withSpace: 可选参数,默认true,输出的字符串是否每两个字节之间放一个空格
    func toHex(withSpace: Bool = true) -> String {
        return subdata2hex(start: 0, end: self.count, withSpace: withSpace)
    }
    
    /// 将指定范围的数据转换成ASCII字符串
    /// - Parameter start: 起始索引(包含)
    /// - Parameter end: 结束索引(不包含)
    func subdata2ascii(start: Int, end: Int) -> String {
        if let str = String(data: self[start.. String {
        let arr = Array(self[start.. String in
            return String(format: "%02X", byte)
        }).joined(separator: withSpace ? " " : "")
        return hex
    }
}

你可能感兴趣的:(swift)