2

数百バイトの文字列といくつかの Int32 値があります。これらを逐語的にファイルに書き込みたい。

私は多くの提案された解決策を試しましたが、どれもうまくいきませんでした。ファイルに不要な括弧、スペース、またはコンマが含まれています。

誰でも簡単で信頼できる解決策を提案できますか?

私の質問は非常に明確だと思いましたが、コメントを読んだ後、単純化しました。

ファイルに次の Hex 値が含まれるように、ファイルに "12345" を書き込みおよび/または追加するにはどうすればよいですか: 3132333435 ?

私が得ることができる最良の結果は、NSData 文字列を書くことによって <3132333435> です。

このリンクを使用して目的の結果を得ることができます:バイトのストリームを書き込むためのプロトコルを迅速に持っていますか? 、しかし、作成したファイルにデータを追加できません。

4

2 に答える 2

1

基本的に問題は、データをポインタに正しく変換して取得することNSOutputStream.writeです。次の拡張機能は、必要なことを行う必要があります。

extension NSOutputStream {
    enum WriteErrors : ErrorType {
        case UTF8ConversionFailed
    }

    func write(string:String) throws -> Int {
        guard let data = string.dataUsingEncoding(NSUTF8StringEncoding) else {
            throw WriteErrors.UTF8ConversionFailed
        }

        return write(UnsafePointer(data.bytes), maxLength: data.length)
    }

    func write(var i:Int32) throws -> Int {
        return withUnsafePointer(&i) {
            self.write(UnsafePointer($0), maxLength: sizeof(Int32))
        }
    }
}

生のバイナリ データをファイルに書き込むことはお勧めできないことに注意してください。最初にバイト オーダーを標準化する必要がありますが、それは読者の課題として残しておきます。

于 2016-03-21T04:52:49.390 に答える