Skip to content

Instantly share code, notes, and snippets.

@strzempa
Created August 3, 2020 14:21
Show Gist options
  • Save strzempa/7f759adb450773020d139276b3d3188b to your computer and use it in GitHub Desktop.
Save strzempa/7f759adb450773020d139276b3d3188b to your computer and use it in GitHub Desktop.
converting string to hex and back
import Foundation
enum HexUidConverter {
static func hexString(from uid: String) -> String {
Data(uid.utf8).hexEncodedString()
}
static func uid(from hexString: String) -> String? {
guard let data = Data(hexString: hexString) else {
return nil
}
return String(data: data, encoding: .utf8)
}
}
private extension Data {
init?(hexString: String) {
let length = hexString.count / 2
var data = Data(capacity: length)
for i in 0 ..< length {
let j = hexString.index(hexString.startIndex, offsetBy: i * 2)
let k = hexString.index(j, offsetBy: 2)
let bytes = hexString[j..<k]
if var byte = UInt8(bytes, radix: 16) {
data.append(&byte, count: 1)
} else {
return nil
}
}
self = data
}
func hexEncodedString() -> String {
return map { String(format: "%02hhx", $0) }.joined()
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment