SwiftでUInt8バイト配列を文字列に変換する方法 質問する

SwiftでUInt8バイト配列を文字列に変換する方法 質問する

Swiftでバイト配列を文字列に変換するときに問題が発生していますUInt8。検索して簡単な解決策を見つけました

String.stringWithBytes(buff, encoding: NSUTF8StringEncoding)

String.typeしかし、メンバーがいないというエラーが表示されますstringWithBytes。誰か解決策を提案してくれませんか?

これは、取得してNSDataバイト配列に変換し、そのバイト配列を文字列に変換するコードです。

let count = data.length / sizeof(UInt8)
var array = [UInt8](count: count, repeatedValue: 0)
data.getBytes(&array, length:count * sizeof(UInt8))
String.stringWithBytes(buff, encoding: NSUTF8StringEncoding)

ベストアンサー1

更新Swift 3/Xcode 8:

文字列の取得元bytes: [UInt8]:

if let string = String(bytes: bytes, encoding: .utf8) {
    print(string)
} else {
    print("not a valid UTF-8 sequence")
}

文字列の取得元data: Data:

let data: Data = ...
if let string = String(data: data, encoding: .utf8) {
    print(string)
} else {
    print("not a valid UTF-8 sequence")
}

更新Swift 2/Xcode 7:

文字列の取得元bytes: [UInt8]:

if let string = String(bytes: bytes, encoding: NSUTF8StringEncoding) {
    print(string)
} else {
    print("not a valid UTF-8 sequence")
}

文字列の取得元data: NSData:

let data: NSData = ...
if let str = String(data: data, encoding: NSUTF8StringEncoding) {
    print(str)
} else {
    print("not a valid UTF-8 sequence")
}

前回の回答:

StringメソッドはありませんstringWithBytes()NSString

 NSString(bytes: , length: , encoding: )

NSDataメソッドを使用することもできますが、配列を必要とせずに から直接文字列を作成することもできますUInt8

if let str = NSString(data: data, encoding: NSUTF8StringEncoding) as? String {
    println(str)
} else {
    println("not a valid UTF-8 sequence")
}

おすすめ記事