我对来自互联网的数据有疑问。我有一个来自互联网的包,其内容类型为:application / octet-stream。
我的问题是如何将其解码为可读值(例如1,4.321,-2.6013等)?或者是否有任何应用可以做到这一点?
例如:
3ecccccd是0.400(http://gregstoll.dyndns.org/~gregstoll/floattohex/)有些是实数。 07d0是2.000
答案 0 :(得分:5)
HTTP的Content-Encoding
标头仅适用于HTTP消息本身内部数据的编码方式,而不适用于数据本身在HTTP之外编码的方式。您的示例中没有Content-Encoding
标头,因此HTTP不会以任何方式对数据进行编码,它会按原样为您提供原始数据。
当HTTP的Content-Type
标头为application/octet-stream
时,表示数据(基于Content-Encoding
解码后,如果有的话)是原始的8位数据,发件人不知道是什么实际的数据类型是。没有更有意义的Content-Type
告诉你数据实际代表什么,你唯一能做的就是分析原始数据并做出有关它可能是什么的有根据的猜测,除非你通过其他方式知道数据是什么是。
通常,二进制数据格式在数据的前面有一个标题/签名,用于标识数据的内容,因此您可以从中开始。
在您可以识别数据类型之前,您无法知道哪些字节代表哪种值,哪些字节用于多字节值等等。简而言之,您需要有关正在下载的数据的更多信息才能知道如何处理它。
答案 1 :(得分:2)
该内容类型未指明任何编码。所有这意味着数据代表(8位)字节流。他们如何被编码是一个完全独立的事情。要发现编码,您可以查看其他标头(例如Content-Encoding),否则编码可能是隐式的,在这种情况下您需要查阅文档。然后根据它选择合适的解码策略。