0
いくつかのバイトを取得して文字列に入れることができません。 この関数を使用してデータを取得しています。すべてうまく動作しますが、たとえデータが空でなくても空文字列になるので、関数getBytesで型stringのバッファを使用することはできません。NSDataからgetBytesを呼び出し、結果を文字列に入れます。
private func getTYPE() {
let x = NSMutableData(contentsOf: URL(fileURLWithPath: path))
let _mode_: [UInt8] = [0x66, 0x74, 0x79, 0x70]
let data = NSData(bytes: _mode_, length: _mode_.count)
let range = x?.range(of: data as Data, in: NSRange(location: 0, length: (x?.length)!))
// Problems here
var y: String = ""
x?.getBytes(&y, range: NSRange(location: (range?.location)! + (range?.length)!, length: 3))
Swift.print(y) // Print result
}
それは例外のいずれかの種類をスローしませんが、文字列は常に空である私は、文字列の代わりにちょうどUINT8を取得しようとした場合... 同じ機能がうまく機能:
// Working Context
var y: UInt8 = 0
x?.getBytes(&y, range: NSRange(location: (range?.location)! + (range?.length)!, length: 1))
どうすれば複数の文字を一緒に読むことができますか?
データがありますバイトのMutableCollection copyBytesを使用して範囲を渡すことができます。 –
'let x ="テスト文字列 ".data(.utf8を使用)! var y:[UInt8] = [0,0,0] x.copyBytes(to:&y、from:0 .. <3) y // [65,32,116] ' –