如何在Swift中使用十六进制编码保存字符串

时间:2018-10-29 12:01:18

标签: swift encoding utf-8 hex

我看过几篇有关如何隐藏和制作十六进制字符串的文章,但是我遇到的问题是写文件时。我知道如何创建具有所需间距的utf8字符串。

5350 4401 0000 0002 0500 0000 0000 0000 1540 0016 4000 5a80 005a 7000 5abc 0056 b000 5680 0056 8001 7fa0 017f a001 5fe0 0157 f00d 56bc 0d56 a001 56a0 0156 a003 56bc 00c0 c000 0000 8100 0001 00

我一直在使用的代码。

var fileURLS = [URL]()

let fileData = getCode().data(using: String.Encoding.utf8)
var fileName = "\(self.drawing.getDrawingName()).\(self.getCodeExtension())"

fileName = fileName.components(separatedBy: CharacterSet.illegalCharacters).joined(separator: "")

let localDir = NSTemporaryDirectory()
let localPath = localDir.appendingFormat("%@", fileName)
fileURLS.append(URL(fileURLWithPath: localPath))
try? fileData?.write(to: URL(fileURLWithPath: localPath), options: .atomic)

当我打开文件时,我试图复制该文件,说它是十六进制编码的77字节,但是当我尝试使用Swift创建相同文件时,它使用utf8编码会变得更大。现在我知道我正在使用UTF8,但是我不知道如何保留上面的内容以及可以使用的编码方式将其写为十六进制编码。

希望这是有道理的。

1 个答案:

答案 0 :(得分:0)

我最初在做的是: 二进制->小数->十六进制字符串->数据->文件

似乎可以解决我的问题的是: Binary-> UInt8 Array-> Data-> File

直接从[UInt8]创建数据需要将其转换为十六进制,间距并保留我需要的十六进制编码。

希望能帮助其他遇到类似问题的人。