Swift: How to convert a String to UInt8 array?

后端 未结 4 679
死守一世寂寞
死守一世寂寞 2020-12-28 12:14

How do you convert a String to UInt8 array?

var str = \"test\"
var ar : [UInt8]
ar = str
相关标签:
4条回答
  • 2020-12-28 12:39

    I came to this question looking for how to convert to a Int8 array. This is how I'm doing it, but surely there's a less loopy way:

    Method on an Extension for String

    public func int8Array() -> [Int8] {
        var retVal : [Int8] = []
        for thing in self.utf16 {
            retVal.append(Int8(thing))
        }
        return retVal
    }
    

    Note: storing a UTF-16 encoded character (2 bytes) in an Int8 (1 byte) will lead to information loss.

    0 讨论(0)
  • 2020-12-28 12:49

    swift 4

     func stringToUInt8Array(){
    
         let str:String = "Swift 4"
         let strToUInt8:[UInt8] = [UInt8](str.utf8)
    
         print(strToUInt8)
     }
    
    0 讨论(0)
  • 2020-12-28 12:53

    Lots of different ways, depending on how you want to handle non-ASCII characters.

    But the simplest code would be to use the utf8 view:

    let string = "hello"
    
    let array: [UInt8] = Array(string.utf8)
    

    Note, this will result in multi-byte characters being represented as multiple entries in the array, i.e.:

    let string = "é"
    print(Array(string.utf8))
    

    prints out [195, 169]

    There’s also .nulTerminatedUTF8, which does the same thing, but then adds a nul-character to the end if your plan is to pass this somewhere as a C string (though if you’re doing that, you can probably also use .withCString or just use the implicit conversion for bridged C functions.

    0 讨论(0)
  • 2020-12-28 13:01
    let str = "test"
    let byteArray = [UInt8](str.utf8)
    
    0 讨论(0)
提交回复
热议问题