字符串转 UTF-32 字符串
String to UTF-32 string
我在这里回答了很多问题,但 none 似乎对我有用。我只是想将我的字符串转换为 UTF-32 字符串。如图所示
var str = "Your"
let dataenc = str.data(using: String.Encoding.utf32)
extension Data {
func hexEncodedString() -> String {
return map { String(format: "%04hhx", [=10=]) }.joined()
}
}
let data = str.data(using: .utf16)!
let hexString = data.map{ String(format:"%02x", [=10=]) }.joined()
print(data.hexEncodedString())
print(hexString)
这行不通
我得到的输出是
00ff00fe00590000006f00000075000000720000
fffe59006f0075007200
不知道该怎么办。提前致谢。
要获得相同的结果,您需要使用 .utf32BigEndian
字符串编码。
extension Data {
func hexEncodedString() -> String {
return map { String(format: "%02x", [=10=]) }.joined()
}
}
var str = "Your"
let dataenc = str.data(using: .utf32BigEndian)!
print(dataenc.hexEncodedString())
输出:
000000590000006f0000007500000072
请注意,仅使用 .utf32
时,字符串 "Your" 会得到 20 个字节,但使用 .utf32BigEndian
时,同一字符串只会得到 16 个字节。那些额外的 4 个字节代表 "BOM"(字节顺序标记)。在您的情况下,使用 .utf32
的结果为您提供了 "little-endian" 格式的数据,数据开头为 "BOM" 。这就是为什么数据以额外的 00ff00fe
(BOM)开始并且接下来的 4 个字节中的每一个都以错误的顺序出现。
明确说明 .utf32BigEndian
将字节按所需顺序排列并删除 BOM。
我在这里回答了很多问题,但 none 似乎对我有用。我只是想将我的字符串转换为 UTF-32 字符串。如图所示
var str = "Your"
let dataenc = str.data(using: String.Encoding.utf32)
extension Data {
func hexEncodedString() -> String {
return map { String(format: "%04hhx", [=10=]) }.joined()
}
}
let data = str.data(using: .utf16)!
let hexString = data.map{ String(format:"%02x", [=10=]) }.joined()
print(data.hexEncodedString())
print(hexString)
这行不通
我得到的输出是
00ff00fe00590000006f00000075000000720000
fffe59006f0075007200
不知道该怎么办。提前致谢。
要获得相同的结果,您需要使用 .utf32BigEndian
字符串编码。
extension Data {
func hexEncodedString() -> String {
return map { String(format: "%02x", [=10=]) }.joined()
}
}
var str = "Your"
let dataenc = str.data(using: .utf32BigEndian)!
print(dataenc.hexEncodedString())
输出:
000000590000006f0000007500000072
请注意,仅使用 .utf32
时,字符串 "Your" 会得到 20 个字节,但使用 .utf32BigEndian
时,同一字符串只会得到 16 个字节。那些额外的 4 个字节代表 "BOM"(字节顺序标记)。在您的情况下,使用 .utf32
的结果为您提供了 "little-endian" 格式的数据,数据开头为 "BOM" 。这就是为什么数据以额外的 00ff00fe
(BOM)开始并且接下来的 4 个字节中的每一个都以错误的顺序出现。
明确说明 .utf32BigEndian
将字节按所需顺序排列并删除 BOM。