1. ホーム
  2. android

[解決済み] アプリケーション/オクテットストリームをデコードする

2022-02-12 15:02:17

質問

インターネットから送られてくるデータについて問題があります。インターネットから送られてくるパッケージのcontent-typeがapplication/octet-streamなんですが、これは何ですか?

質問は、どのようにそれを読み取り可能な値(1,4.321,-2.6013など)にデコードするか、またはこれを行うことができるアプリケーションはありますか?

例えば

3ecccccdは0.400( http://gregstoll.dyndns.org/~gregstoll/floattohex/ ) いくつかは実数です。07d0は2.000

解決方法は?

HTTPの Content-Encoding ヘッダは、データが HTTP メッセージの内部でどのようにエンコードされるかにのみ適用され、データそのものが HTTP の外部でどのようにエンコードされるかは適用されません。 このヘッダには Content-Encoding ヘッダが存在するため、HTTPはデータをエンコードしておらず、生のデータをそのまま渡しています。

HTTPの Content-Type ヘッダーは application/octet-stream に基づいてデコードした後のデータであることを意味します。 Content-Encoding 送信者は、データの実際の型が何であるかを知らない。 より意味のある Content-Type そのデータが実際に何を表しているのかが他の手段で分からない限り、生データを分析して、それが何であるかを経験的に推測するしかない。

通常、バイナリデータのフォーマットでは、データの先頭にヘッダやシグネチャがあり、そのデータが何であるかを識別することができますので、まずはそこから始めてみてはいかがでしょうか。

データ型が特定できないと、どのバイトがどんな値を表すのか、マルチバイトの値にはどのエンディアンが使われているのか、などがわかりません。 要するに、ダウンロードしたデータをどのように処理すればよいかを知るためには、そのデータに関する詳細な情報が必要なのです。