微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

swift – 将十六进制编码的String转换为String

我想在 Swift 3中转换以下十六进制编码的字符串:

dcb04a9e103a5cd8b53763051cef09bc66abe029fdebae5e1d417e2ffc2a07a4

到它的等效字符串:

ܰJ:\ص7cï  ¼f«à)ýë®^A~/ü*¤

以下网站的工作非常好:

http://codebeautify.org/hex-string-converter

http://string-functions.com/hex-string.aspx

但我无法在Swift 3中做同样的事情.以下代码也不能完成这项工作:

func convertHexStringTonormalString(hexString:String)->String!{
  if let data = hexString.data(using: .utf8){
      return String.init(data:data,encoding: .utf8)
  }else{ return nil}
}

解决方法

您希望将十六进制编码数据用作AES密钥,但是
数据不是有效的UTF-8序列.你可以解释
它作为ISO拉丁语编码中的字符串,但AES(键:字符串,…)
初始化程序将字符串转换回其UTF-8表示形式,
即,您将获得与您开始时不同的关键数据.

因此,您根本不应将其转换为字符串.使用

extension Data {
    init?(fromHexEncodedString string: String)
}

hex/binary string conversion in Swift开始的方法
将十六进制编码的字符串转换为Data然后传递它
作为AES的数组(键:数组< UInt8>,…)初始值设定项:

let hexkey = "dcb04a9e103a5cd8b53763051cef09bc66abe029fdebae5e1d417e2ffc2a07a4"
let key = Array(Data(fromHexEncodedString: hexkey)!)

let encrypted = try AES(key: key,....)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐