0

我对来自互联网的数据有疑问。我有一个来自 Internet 的包,其内容类型为:application/octet-stream。

我的问题是如何将其解码为可读值(例如 1,4.321,-2.6013 等)?或者有没有可以做到这一点的应用程序?

例如:

3ecccccd 是 0.400 ( http://gregstoll.dyndns.org/~gregstoll/floattohex/ ) 有些是实数。07d0 是 2.000

在此处输入图像描述

4

2 回答 2

8

HTTP 的Content-Encoding标头仅适用于数据在 HTTP 消息本身内部的编码方式,而不适用于数据本身在 HTTP 之外的编码方式。您的示例中没有Content-Encoding标头,因此 HTTP 不会以任何方式对数据进行编码,而是按原样为您提供原始数据。

当 HTTP 的Content-Typeheader 是application/octet-stream时,表示数据(根据 解码后Content-Encoding,如果有的话)是原始的 8 位数据,发送方不知道数据的实际类型是什么。如果没有更有意义Content-Type的方式告诉您数据实际代表什么,您唯一能做的就是分析原始数据并对它可能是什么做出有根据的猜测,除非您通过其他方式知道数据应该是什么。

通常,二进制数据格式在数据的前面有一个标头/签名来标识数据是什么,因此您可以从它开始。

在您能够识别数据类型之前,您无法知道哪些字节代表什么类型的值,多字节值使用什么字节序等。简而言之,您需要有关正在下载的数据的更多信息才能知道如何处理它。

于 2013-10-16T21:23:55.243 回答
3

该内容类型不表示任何编码。这意味着数据代表一个(8位)字节流。它们的编码方式是完全不同的事情。要发现编码,您可以查看其他标头(例如 Content-Encoding),否则编码可能是隐式的,在这种情况下您需要查阅文档。然后据此选择合适的解码策略。

于 2013-10-16T17:30:42.713 回答