“十进制ASCII码”是什么意思?

4
也许我在使用谷歌方面做得很糟糕,但是Bencoding的这些规范不断提到一种称为“十进制ASCII”的东西,这让我觉得它与常规ASCII不同。有人能解释一下吗?
5个回答

7

为避免混淆(尽管可以认为默认情况下是十进制),base明确指出。

考虑这个问题:给定“12”的文本表示(ASCII码),其数值是多少?

  • 如果是十进制,那么就是1 * 10 + 2 -> 12。
  • 如果是八进制(oct),那么就是1 * 8 + 2 -> 10。
  • 如果是十六进制(hex),那么就是1 * 16 + 2 -> 18。

然而,在Bencode中,它始终是十进制,因此42(整数)被编码为“i42e”。


使用十六进制而非十进制的原因可能是为了在较长的ASCII编码数字中节省一个字节,或者确保一致的填充大小,但是使用十进制更符合数字通常的书写方式,并使Bencoded文件更易于访问。(也就是说,Bencoded文件通常不会被“人工编辑”)。

谢谢,这真的很有启发!示例非常棒。 - Breedly
使Bencoded文件更易访问 - Bencoded文件通常包含二进制数据,因此我认为它们本来就不太容易访问。 - slang

1
“Base 10 ASCII”在这个上下文中并不是一个具体的东西。它只是意味着使用ASCII字符来表示一个十进制数。

1
与二进制相反?看起来数字5以其十进制形式5而不是二进制版本101显示。

0

如果我用我的简单命令行文本编辑器打开一个十进制ASCII编码的文件,它应该是可读的吗? - Breedly
整数的编码方式如下:i<十进制ASCII编码的整数>e。i和e分别为起始和结束定界符。可以有负数,例如i-3e。只能使用有效数字,不能用零填充整数,例如i04e是无效的。但是,i0e是有效的。 - exussum

0

基于十进制的ASCII码意味着你用十进制而不是十六进制来写出字符的ASCII码。

因此,A将被写成65。空格字符将被写成32。m将被写成109。

这与(例如)URL编码的ASCII不同,后者是十六进制的。在URL编码中,%41表示A,%20表示空格,%6D表示m。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接