16進Hexコードを変換して日本語表記したい。


16進Hexコード「5e 3d c3 bd c4 5e c3 bd c4 1b 24 42 23 36 1b 28 4a
20」を日本語で「^=ﾃｽﾄ^ﾃｽﾄ６」と表現できるのですが、encode、decodeを駆使しutf-8,unucode,ISOなど使用し変換を試みているのですが半角文字「ﾃｽﾄ^ﾃｽﾄ」のみ出たり全角の「６」だけでたりでなかなか「^=ﾃｽﾄ^ﾃｽﾄ６」と出てくれません。  
どの様にすれば表現できますでしょうか。  
ご教授頂ければ幸いです




`iso-2022-jp-ext`というのが使えるようです。

[半角カナありiso-2022-jpエンコーディング](http://tanakahisateru.hatenablog.jp/entry/20080720/1216565211)

> 万全を期すなら、使用できない文字をフィルタするべきですが、「とりあえず動く」Pythonicな現実解プログラムを書くための現実解としては、
[code]

>     u'ﾊﾝｶｸ'.encode('iso-2022-jp-ext')
>  
[/code]

>
> とします。これで、他の日本語エンコーディングで入力された任意の文字列を、とりあえずiso-2022-jpとして扱うことができます。

上記を応用して、いったん`0x80`以上を`cp932`で`decode`し、`iso-2022-jp-
ext`で`encode`し直すことでデータを変換し、再度`iso-2022-jp-ext`で`decode`すれば出来るでしょう。  
変更：半角カナが連続しても全て1文字毎に切り替えて冗長だったのを整理

[code]

    data = b'\x5e\x3d\xc3\xbd\xc4\x5e\xc3\xbd\xc4\x1b\x24\x42\x23\x36\x1b\x28\x4a\x20'
    
    work = []
    kana = []
    for b in data:
      if b < 0x80:
        if kana:
          work.extend(bytes(kana).decode('cp932').encode('iso-2022-jp-ext'))
          kana = []
        work.append(b)
      else:
        kana.append(b)
    
    if kana:
      work.extend(bytes(kana).decode('cp932').encode('iso-2022-jp-ext'))
    
    newdata = bytes(work)
    
    newdata.decode('iso-2022-jp-ext')
    
[/code]




`iso-2022-jp-ext`というのが使えるようです。

[半角カナありiso-2022-jpエンコーディング](http://tanakahisateru.hatenablog.jp/entry/20080720/1216565211)

> 万全を期すなら、使用できない文字をフィルタするべきですが、「とりあえず動く」Pythonicな現実解プログラムを書くための現実解としては、
[code]

>     u'ﾊﾝｶｸ'.encode('iso-2022-jp-ext')
>  
[/code]

>
> とします。これで、他の日本語エンコーディングで入力された任意の文字列を、とりあえずiso-2022-jpとして扱うことができます。

上記を応用して、いったん`0x80`以上を`cp932`で`decode`し、`iso-2022-jp-
ext`で`encode`し直すことでデータを変換し、再度`iso-2022-jp-ext`で`decode`すれば出来るでしょう。  
変更：半角カナが連続しても全て1文字毎に切り替えて冗長だったのを整理

[code]

    data = b'\x5e\x3d\xc3\xbd\xc4\x5e\xc3\xbd\xc4\x1b\x24\x42\x23\x36\x1b\x28\x4a\x20'
    
    work = []
    kana = []
    for b in data:
      if b < 0x80:
        if kana:
          work.extend(bytes(kana).decode('cp932').encode('iso-2022-jp-ext'))
          kana = []
        work.append(b)
      else:
        kana.append(b)
    
    if kana:
      work.extend(bytes(kana).decode('cp932').encode('iso-2022-jp-ext'))
    
    newdata = bytes(work)
    
    newdata.decode('iso-2022-jp-ext')
    
[/code]

