Converting Hex String to NSData in Swift

后端 未结 11 1299
一生所求
一生所求 2020-11-27 05:22

I got the code to convert String to HEX-String in objective-C.

- (NSString *) CreateDataWithHexString:(NSString*)inputString
{
NSUInteger inLength = [inputSt         


        
11条回答
  •  面向向阳花
    2020-11-27 05:50

    One more solution that is simple to follow and leverages swifts built-in hex parsing

    func convertHexToBytes(_ str: String) -> Data? {
        let values = str.compactMap { $0.hexDigitValue } // map char to value of 0-15 or nil
        if values.count == str.count && values.count % 2 == 0 {
            var data = Data()
            for x in stride(from: 0, to: values.count, by: 2) {
              let byte = (values[x] << 4) + values[x+1] // concat high and low bits
              data.append(UInt8(byte))
            }
            return data
        }
        return nil
    }
    
    let good = "e01AFd"
    let bad = "e0671"
    let ugly = "GT40"
    print("\(convertHexToBytes(good))") // Optional(3 bytes)
    print("\(convertHexToBytes(bad))") // nil
    print("\(convertHexToBytes(ugly))") // nil
    

提交回复
热议问题