問題タブ [hexdump]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - 既製のC++16進ダンプコード
私はネットワークおよびシリアル通信ソフトウェアを頻繁に使用しているため、データパケットの16進ダンプを表示またはログに記録するためのコードが必要になることがよくあります。
これを行うたびに、さらに別の16進ダンプルーチンを最初から作成します。私は再びそうしようとしていますが、ここで尋ねると思いました:どこかにC ++用の良い無料の16進ダンプコードはありますか?
欲しい機能:
- 1行あたりNバイト(Nはなんらかの方法で構成可能)
- 16進数の横にあるオプションのASCII/UTF8ダンプ
- 構成可能なインデント、行ごとのプレフィックス、行ごとのサフィックスなど。
- 最小限の依存関係(理想的には、コードをすべてヘッダーファイルに含めるか、貼り付けるだけのスニペットにします)
編集: 明確化:stderr、stdout、ログファイル、またはその他のそのような出力ストリームに書き込むために、自分のプログラムに簡単にドロップできるコードを探しています。コマンドラインの16進ダンプユーティリティを探していません。
hex - 16進ダンプを人間が読める形式に変換するための汎用ユーティリティまたはライブラリはありますか?
私はさまざまなデバイスとのシリアル通信を頻繁に使用するため、ログ ファイルの 16 進ダンプを分析する必要がよくあります。現在、ダンプを見て、プロトコル仕様を見て、結果を書き留めることで、これを手動で行っています。ただし、これは面倒でエラーが発生しやすく、特にメッセージに数百バイトが含まれ、ビッグエンディアンとリトルエンディアンのデータ、ASCII、Unicode、圧縮、CRC、. . . .
より一般的なケースを支援するために、いくつかの Python スクリプトを作成しました。しかし、処理するプロトコルはたくさんあります。また、分析するダンプがたくさんあることがわかっていない限り、カスタム スクリプトの作成に時間を費やすのは意味がありません。
私が望むのは、このアクティビティを自動化できるある種のユーティリティです。たとえば、次のようなテキスト 16 進ダンプがあるとします。
そして、次のようなメッセージ形式のある種の説明:
次のような出力が得られます。
多くの場合、ハードウェア ベースのプロトコル アナライザーには、このようなことを行うための優れた機能が備わっていますが、テキスト ログ ファイルを操作する必要があります。
そのようなユーティリティまたはライブラリは存在しますか?
報奨金を設定してから、いくつかの良い答えが出てきました。報奨金が効くと思います!
Wireshark と HexEdit はどちらも有望に見えます。私はそれらを見て、おそらく私のニーズに合った方に報奨金を授与します. しかし、私はまだ他のアイデアに対してオープンです。
c++ - メモリ位置からの16進ダンプ
ポインタを使用して、異なるプロセス/スレッド間でデータを交換するために使用するある種の「共有メモリ」を指定します。ここで、共有バッファーの内容の16進ダンプが必要です。誰かがそれを行う方法を知っていますか?
ありがとう、R
unix - Unix hexdump のエンディアン
次の *nix コマンドは、IP とポート (127.0.0.1:80) の 16 進表現を hexdump コマンドにパイプします。
-e フラグを使用すると、任意の形式で入力を解析できます。この場合、IP の最初の 3 オクテットを符号なし 10 進数に解析し、その後にドットを付けます。最後のオクテットも符号なし 10 進数に解析されますが、その後にコロンが続きます。最後に、ここに問題があります。ポートの 2 バイトは、改行が続く単一の符号なし 10 進数として解析されます。
このコマンドを実行するシステムのエンディアンによって、結果は異なります。ビッグ エンディアン システムではポート 80 が正しく表示されます。一方、リトル エンディアン システムではポート 20480 が表示されます。
-e を介して任意のフォーマット指定を許可しながら、エンディアンを認識するように hexdump を操作する方法はありますか?
c - hexdumpで静的変数を見る
ソフトウェア開発のセキュリティ面に関する講義試験の準備をしています。hexdump を使用してバイナリから静的 char 配列の値を常に読み取ることができるかどうかを知りたいですか?
そうでない場合、hexeditorで値を読み取ることができるかどうかは、どのような要因に依存しますか??
ありがとう、
hexdump - hexdumpの混乱
Unixのhexdumpユーティリティで遊んでいます。私の入力ファイルはUTF-8でエンコードされており、16進数のUTF-8である1文字が含まñ
れC3 B1
ています。
は?これはB1 C3
、私が期待したものの逆を示しています!誰かが説明できますか?
期待される出力を得るために私はします:
エンコーディングシステムを理解していると思っていました。
perl - Perlでの16進ダンプの解析
メッセージの16進ダンプがファイルにあり、それを配列に入れて、デコードロジックを実行できるようにします。
これが、このようなメッセージを解析するためのより簡単な方法であるかどうか疑問に思いました。
37 39 30 35 32 34 35 34 3B 32 31 36 39 33 34 35
3B 32 31 36 39 33 34 36 00 00 01 08 40 00 00 15
6C 71 34 34 73 69 6D 31 5F 33 30 33 31 00 00 00
00 00 01 28 40 00 00 15 74 65 6C 63 6F 72 64 69
74 65 6C 63 6F 72 64 69
データはどの行でも最大16バイトになる可能性があることに注意してください。しかし、どの行にもより少ないバイトを含めることができます(最小:1)
perlで一度に2文字を読み取るのではなく、優れたエレガントな方法はありますか?
java - 外部デバイスにデータを送信する方法
コンピュータの com ポートにシリアル デバイスが接続されています。このデバイスに Hex データを送信したいのですが、デバイスにデータを送信するための最良の方法は何ですか。
たとえば、私はこのデータを持っています-
私が今していることは-
私が直面している問題は - シリアル デバイスが応答していませんか? ソフトウェアを介して同じ16進文字列を送信すると、端末が応答します。私は何か間違ったことをしていますか?
これはコードの一部です-
こんにちはみんな、私はついにそれを適切に行う方法を自分で見つけました。正しい形式でデータを送信していませんでした。他のソフトウェアを使用してシリアル データのやり取りを監視しているときにわかりました。
シリアル デバイスにデータを送信する最良の方法は、ASCII DATA --> HEX STRING --> UNSIGNED BYTE です。
emacs - Hexl モードで gzip アーカイブの内容を表示する
hexl-find-file
gzip されたファイルを開き、内容を 16 進モードで表示する同様の関数を作成したいと考えています。どうすればいいですか?
c - xxdバイナリダンプの問題
上記の出力はxxdから期待される形式ですか、それとも右側の奇妙な文字の存在は私が何か間違ったことをしたことを示唆していますか?
単純なリンクリストをシリアル化しようとしていますが、それが出力です。シリアル化からセンチメンタル文字「\0」を削除しないと、エラーが発生しますか?