为了获得相同的结果,您需要使用
.utf32BigEndian
字符串编码。
extension Data {
func hexEncodedString() -> String {
return map { String(format: "%02x", $0) }.joined()
}
}
var str = "Your"
let dataenc = str.data(using: .utf32BigEndian)!
print(dataenc.hexEncodedString())
输出:
000000 59000006F000007500000072
注意,当使用
.utf32
字符串“Your”有20个字节,但是
.UTF32比根迪亚语
同一个字符串只能得到16个字节。额外的4个字节表示“BOM”(字节顺序标记)。在您的情况下,使用
.utf32
以“little endian”格式向您提供数据,数据开头带有“BOM”。这就是为什么数据以额外的开始
00ff00fe
(BOM)和接下来的4个字节中的每一个都以错误的顺序出现。
明确说明
.UTF32比根迪亚语
将字节按所需顺序排列,并删除BOM表。