xxd 二进制转储问题

发布于 2024-09-26 20:52:12 字数 176 浏览 0 评论 0原文

alt text

上述输出是否采用 xxd 所期望的格式,或者右侧是否存在奇怪的字符表明我做错了什么?

我正在尝试序列化一个简单的链表,这就是我得到的输出。未能从序列化中删除标记字符“\0”是否会导致错误?

alt text

Is the above output in the format that should be expected from xxd or does the presence of the bizzare characters on the right suggest i've done something wrong?

I'm attempting to serialise a simple linked list and that's the output i get. Would failing to remove the sentinal character "\0" from the serialisation cause the error?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

自此以后,行同陌路 2024-10-03 20:52:12

我猜您正在序列化为二进制而不是字符串,所以这是正常的。左边每两个十六进制数字对应右边的一个字符。这是一个字节,即八位。有些字符是可打印的(参见下面的 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|

I'm guessing you are serializing as binary not as strings, so this is normal. Each two hex digits on the left correspond to a one character on the right. This is one byte, i.e. eight bits. Some characters are printable (see ASCII table bellow), some are not (shown as dots).

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|
惯饮孤独 2024-10-03 20:52:12

是的,这是预期的。右侧的这些字符仅代表输入中与左侧的十六进制代码相同的字节。具有表示可打印字符的值的字节使用相应的字符显示,其他字节用 . 替换。

Yes, it is expected. Those characters in the right just represent the same bytes in your input you have hex codes for in the left. Bytes with values representing printable characters are shown using the corresponding character, others are substituted with . .

还如梦归 2024-10-03 20:52:12

输出的格式如下:

地址:十六进制数据 ASCII_

数据 十六进制和 ASCII 数据相同,但显示方式不同。在 ASCII 数据中,只有某些字节作为可打印字符输出,因为许多字节值不可打印,而一些可打印的字节值会弄乱打印数据的格式。

我无法判断这对于您的链接列表是否正确或不正确,因为我不知道您的数据应该是什么样子。测试序列化代码的最佳方法是将其读回。您可能还希望编写以易于查看的格式显示代码的代码,并将该代码插入您的编写器和阅读器中,以便您可以查看那里的数据存在差异。

The output is of the form:

address: hexadecimal_data ASCII_data

The hexadecimal and ASCII data are the same, but displayed differently. In the ASCII data only certain bytes are output as their printable characters since many byte values are not printable and some that are printable would mess up the formatting of printed data.

There is no way for me to tell if this is correct or incorrect for your linked list since I have no idea what your data should look like. The best way to test serialization code is to read it back in. You will probably also want to write code that displays the code in an easy to look at format and plug that code into your writer and your reader so that you can look at for differences in the data there.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文