Domanda

alt text

L'output sopra riportato è nel formato previsto da xxd o la presenza dei caratteri bizzarri sulla destra suggerisce che ho fatto qualcosa di sbagliato?

Sto tentando di serializzare un semplice elenco collegato e questo è l'output che ottengo.La mancata rimozione del carattere sentinella "\0" dalla serializzazione causerebbe l'errore?

È stato utile?

Soluzione

sto cercando di indovinare che stai serializzazione come binario non come stringhe , quindi questo è normale. Ogni due cifre esadecimali sulla sinistra corrispondono ad uno carattere a destra. Questo è un byte , cioè otto bit. Alcuni caratteri sono stampabili (vedi tabella ASCII muggito), alcuni non sono (indicato come punti).

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|

Altri suggerimenti

Sì, ci si aspetta. Quei personaggi di destra appena rappresentano lo stesso byte nel vostro ingresso avete codici esadecimali per la sinistra. Byte con valori che rappresentano caratteri stampabili vengono visualizzati utilizzando il carattere corrispondente, altri sono sostituiti con ..

L'output è nel formato:

indirizzo:dati_esadecimali dati_ASCII

I dati esadecimali e ASCII sono gli stessi, ma visualizzati in modo diverso.Nei dati ASCII solo alcuni byte vengono emessi come caratteri stampabili poiché molti valori di byte non sono stampabili e alcuni stampabili potrebbero compromettere la formattazione dei dati stampati.

Non ho modo di sapere se questo è corretto o errato per il tuo elenco collegato poiché non ho idea di come dovrebbero apparire i tuoi dati.Il modo migliore per testare il codice di serializzazione è rileggerlo.Probabilmente vorrai anche scrivere codice che visualizzi il codice in un formato facile da leggere e collegare quel codice al tuo scrittore e al tuo lettore in modo da poter cercare le differenze nei dati lì.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top