1. ホーム
  2. arrays

[解決済み] SwiftでUInt8バイト配列を文字列に変換する方法

2022-02-16 15:49:05

質問

を変換する際に問題に直面しました。 UInt8 swiftでバイト配列を文字列に変換しています。私は検索して、簡単な解決策を見つけました

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)

解決方法は?

のアップデート 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")
}