端末を損傷せずにバイナリデータをそのまま印刷します。

端末を損傷せずにバイナリデータをそのまま印刷します。

私は書いたPythonモジュールオブジェクトをダンプします。ただし、ターミナル()numpy.ndarrayにバイナリデータ(たとえば)を保持するオブジェクトと一緒に使用すると、データを印刷するとターミナルのフォントが壊れます。明らかに、特定の文字は端末制御シーケンスとして扱われます。 Windowsでは、Cygwin端末でも印刷が正常に機能します。linuxTERM=linuxminttyTERM=xterm

catバイナリファイルを使用しても同じことが起こります。

もちろん、この問題を解決するために使用できますが、reset出力が失われ、一般的に不便になる対価を払うことになります。私も知っていますがすべてではありませんが、ほとんどの制御文字にはフォントに代替グラフィック表現があります。(たとえばの場合CRです。)

だから、linux端末が特殊文字をリテラルとして処理するように元のストリームを変更する方法はありますか?基本的に次のようなことを見たいと思います。

バイナリデータ出力例

私は主にプログラム(=端末の観点から実行する必要があるタスクとパブリックシステムライブラリ(存在する場合)の実装)に興味があります。

Pythonはrepr()私の要件には適していません。印刷できないASCII文字を国の文字を含む可変長シーケンスに拡張しますが、モジュールはダンプ印刷を簡潔で読みやすくするように設計されています。

ベストアンサー1

これshowconsolefontこのプログラムには256種類(または512種類...)を表示できます。文字の形Linuxコンソールからすぐに。ただし、これを行うにはシステムコールを使用します(これはコンソールデバイスへの接続でのみ機能します)。マニュアルページにはこれに対する言及はありません。

しかし、文字の形(文字の表示に使用)数値。文字を端末に印刷して表示し、文字の形にマッピングします。 Linuxコンソールに制御文字を印刷可能として扱うように指示するエスケープシーケンスはありません。

たとえば、showconsolefont実際にはそうではありません。書くセル 0-31 の制御文字です。それ地図システムコールを使用して、印刷可能文字を0から31の範囲に変換します。

追加資料:

おすすめ記事