簡體   English   中英

如何在 Swift 中將字節數組轉換為字符串

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM