上記の出力はxxdから期待される形式ですか、それとも右側の奇妙な文字の存在は私が何か間違ったことをしたことを示唆していますか?
単純なリンクリストをシリアル化しようとしていますが、それが出力です。シリアル化からセンチメンタル文字「\0」を削除しないと、エラーが発生しますか?
出力は次の形式です。
アドレス:hexadecimal_data ASCII_data
16進データとASCIIデータは同じですが、表示が異なります。ASCIIデータでは、多くのバイト値は印刷できず、印刷可能なものは印刷データのフォーマットを台無しにするため、特定のバイトのみが印刷可能な文字として出力されます。
あなたのデータがどのように見えるべきか私にはわからないので、これがあなたのリンクリストに対して正しいか間違っているかを私が知る方法はありません。シリアル化コードをテストする最良の方法は、コードを読み戻すことです。コードを見やすい形式で表示するコードを記述し、そのコードをライターとリーダーに接続して、そこのデータの違い。
文字列ではなくバイナリとしてシリアル化していると思いますので、これは正常です。左側の2つの16進数は、右側の1文字に対応します。これは1バイト、つまり8ビットです。一部の文字は印刷可能であり(以下のASCII表を参照)、一部は印刷可能ではありません(ドットで表示)。
ASCII Table - | hex value - name/char |
| 00 nul| 01 soh| 02 stx| 03 etx| 04 eot| 05 enq| 06 ack| 07 bel|
| 08 bs | 09 ht | 0a nl | 0b vt | 0c np | 0d cr | 0e so | 0f si |
| 10 dle| 11 dc1| 12 dc2| 13 dc3| 14 dc4| 15 nak| 16 syn| 17 etb|
| 18 can| 19 em | 1a sub| 1b esc| 1c fs | 1d gs | 1e rs | 1f us |
| 20 sp | 21 ! | 22 " | 23 # | 24 $ | 25 % | 26 & | 27 ' |
| 28 ( | 29 ) | 2a * | 2b + | 2c , | 2d - | 2e . | 2f / |
| 30 0 | 31 1 | 32 2 | 33 3 | 34 4 | 35 5 | 36 6 | 37 7 |
| 38 8 | 39 9 | 3a : | 3b ; | 3c < | 3d = | 3e > | 3f ? |
| 40 @ | 41 A | 42 B | 43 C | 44 D | 45 E | 46 F | 47 G |
| 48 H | 49 I | 4a J | 4b K | 4c L | 4d M | 4e N | 4f O |
| 50 P | 51 Q | 52 R | 53 S | 54 T | 55 U | 56 V | 57 W |
| 58 X | 59 Y | 5a Z | 5b [ | 5c \ | 5d ] | 5e ^ | 5f _ |
| 60 ` | 61 a | 62 b | 63 c | 64 d | 65 e | 66 f | 67 g |
| 68 h | 69 i | 6a j | 6b k | 6c l | 6d m | 6e n | 6f o |
| 70 p | 71 q | 72 r | 73 s | 74 t | 75 u | 76 v | 77 w |
| 78 x | 79 y | 7a z | 7b { | 7c | | 7d } | 7e ~ | 7f del|
はい、それは期待されています。右側の文字は、左側に16進コードがある入力の同じバイトを表しているだけです。印刷可能な文字を表す値を持つバイトは、対応する文字を使用して表示され、その他のバイトは。に置き換えられ.
ます。