回答編集履歴
2
誤字修正
test
CHANGED
@@ -4,6 +4,6 @@
|
|
4
4
|
書かれたコードだと `string` は本来可変ですが標準ライブラリが自動で可変長を `長さ+データ` というルールで保存してくれています。例えば "abc" をBinaryWriterでシリアライズすると `[03,'a','b','c']` となっていると思います。stringの場合はライブラリがやってくれますがそれ以外は自分で実装する必要があります。
|
5
5
|
|
6
6
|
この方法だと元に戻す(デシリアライズ)時にここに `長さ+文字列` があると事前に知っていないと戻せません。
|
7
|
-
また、長さ部分は1バイト表現(255文字まで)でよいのかなど
|
7
|
+
また、長さ部分は1バイト表現(255文字まで)でよいのか、データの並び順はビッグエンディアンかリトルエンディアンか、など考えることは多いです。
|
8
8
|
そのため、これらを汎用化させたシリアライザーというライブラリがいくつもあります。jsonもその1種ですが
|
9
|
-
バイナリー形式での保存に興味があるのであれば通信系なら「BER(タグ+長さ+データ)」
|
9
|
+
バイナリー形式での保存に興味があるのであれば通信系なら「[BER符号化方式](http://www5d.biglobe.ne.jp/stssk/asn1/ber.html)(タグ+長さ+データ)」、ライブラリなら「[MessagePack](https://msgpack.org/ja.html)」、「ProtoBuf」あたりを調べてみるといいでしょう。
|
1
誤字修正
test
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
自分用の独自の保存コード(シリアライザ)を作りたいのかと想定します。
|
2
2
|
可変長のデータを保存する場合はルールを決めて保存します。
|
3
3
|
|
4
|
-
書かれたコードだと `string` は本来可変ですが標準ライブラリが自動で可変長を `長さ+データ` というルールで保存してくれています。例えば "abc" をBinaryWriterでシリアライズすると `[03,'a','b','c']` となっていると思います。string
|
4
|
+
書かれたコードだと `string` は本来可変ですが標準ライブラリが自動で可変長を `長さ+データ` というルールで保存してくれています。例えば "abc" をBinaryWriterでシリアライズすると `[03,'a','b','c']` となっていると思います。stringの場合はライブラリがやってくれますがそれ以外は自分で実装する必要があります。
|
5
5
|
|
6
6
|
この方法だと元に戻す(デシリアライズ)時にここに `長さ+文字列` があると事前に知っていないと戻せません。
|
7
7
|
また、長さ部分は1バイト表現(255文字まで)でよいのかなど、いろいろ考えることは多いです。
|