[英]How Can I convert byte array to String in Swift
我有一個 json 如下。 我需要將圖像轉換為byte array
並將其作為String
發布。
我可以將圖像轉換為byte array
,但如何將其轉換為String
? 將byte array
轉換為String
時出現錯誤。
錯誤:
"not a valid UTF-8 sequence"
JSON:
"photo1": "[255,216,255,224,0,16,74,70,73, ..... ,]"
圖像數據到字節數組:
func getArrayOfBytesFromImage(imageData:NSData) -> Array<UInt8> {
// the number of elements:
let count = imageData.length / MemoryLayout<Int8>.size
// create array of appropriate length:
var bytes = [UInt8](repeating: 0, count: count)
// copy bytes into array
imageData.getBytes(&bytes, length:count * MemoryLayout<Int8>.size)
var byteArray:Array = Array<UInt8>()
for i in 0 ..< count {
byteArray.append(bytes[i])
}
return byteArray
}
使用 getArrayOfBytesFromImage Function:
if let string = String(bytes: getArrayOfBytesFromImage(imageData: imageData), encoding: .utf8) {
print(string)
} else {
print("not a valid UTF-8 sequence")
}
這些不是 UTF-8 字節,所以不要說encoding: .utf8
。 這些字節不會形成字符串,因此您不應使用String.init(bytes:encoding:)
。 您應該獲取這些字節的值,並以一種或另一種方式獲取它們的description
(例如通過字符串插值)。
你甚至不需要一個字節數組。 只需 go 直接到字符串,因為這就是你所追求的。
let imageData = Data([1, 2, 3, 4, 5]) // for example
let string = "[\(imageData.map { "\($0)" }.joined(separator: ","))]"
print(string) // prints [1,2,3,4,5]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.