Reputation: 556
How do you convert a String to UInt8 array?
var str = "test"
var ar : [UInt8]
ar = str
Upvotes: 47
Views: 52233
Reputation: 2237
swift 4
func stringToUInt8Array(){
let str:String = "Swift 4"
let strToUInt8:[UInt8] = [UInt8](str.utf8)
print(strToUInt8)
}
Upvotes: 4
Reputation: 69767
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:
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.
Upvotes: 0
Reputation: 40965
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.
Upvotes: 78