お知らせ

  • 利用規約を守って投稿してください。また、よくある質問および投稿の手引きも参照してください。
  • メッセージの投稿にはアカウントが必要です。未登録の方は、ユーザ登録ページからアカウントを作成することができます。

#1 2010-03-14 22:37:12

sony5614
メンバ
登録日: 2009-08-17

ASCIIコード

HEXコードをASCIIコードに変換したいのですが
echo 'HEXコード' | perl -lne 'print pack("H*", $_)'
とやると
��:�*�
Ubuntu@Ubuntu:~$
このように映ります。
どうすれば変換ができますか?
もしくは変換するサイトやツール、アプリ(exeでも)あったら教えていただきたいです。

オフライン

 

#2 2010-03-15 01:36:53

si
メンバ
From: hokkaido kitami, jp
登録日: 2007-01-15

Re: ASCIIコード

目的がよく分かりませんが、

$ echo 'HEXコード' |hexdump -C
00000000  48 45 58 e3 82 b3 e3 83  bc e3 83 89 0a           |HEX..........|
0000000d

見たいな感じで表示したいのですか?

オフライン

 

#3 2010-03-15 08:41:57

weyk
メンバ
登録日: 2009-04-03

Re: ASCIIコード

「期待通り動いたらどうなるか」の、「入力」と「出力」の具体例を挙げると良いかと思います。
・動かない例
・期待と違ったスクリプト
のみ掲載されていても、結局なにをしようとしていたのかを想像するのは困難です。

オフライン

 

#4 2010-03-15 10:35:29

sony5614
メンバ
登録日: 2009-08-17

Re: ASCIIコード

すみません。
文字での表示をさせたいです。
93,D3,3C,62,A9
これを変換したいのですがAとかPとか英数で表示させたいです。

オフライン

 

#5 2010-03-15 11:00:07

weyk
メンバ
登録日: 2009-04-03

Re: ASCIIコード

以下のような動作と言うことでしょうか?(あくまでもイメージです)
$ echo '31,32,41,42,43' | (なんかコマンド)
12ABC
$
上記のような動作だとすると、多少調整が必要ですが、最初ので、ほぼ正しいはずです(動作未確認)。
echo '93D33C62A9' | perl -lne 'print pack("H*", $_)'

# US-ASCIIには、00~7Fまでしかないので注意。UTF8やShiftJISなど、別のキャラクターエンコードを想定していて、それが実行している環境のキャラクターエンコード(例えば、日本語版のMS-WindowsならShiftJISモドキのCP932とか)と異なる場合は、(人間が読めるように表示するには)変換が必要です。
echo '3132414243' | perl -lne 'print pack("H*", $_)'
と試して、
12ABC
と表示されれば、(US-ASCIIに限定すれば)方法は正しい ということになります。

オフライン

 

#6 2010-03-15 11:09:25

sony5614
メンバ
登録日: 2009-08-17

Re: ASCIIコード

12ABCとは表示されますね。
echo '93D33C62A9' | perl -lne 'print pack("H*", $_)'
をした場合はなぜか
��<b�
と映ってしまいます。

オフライン

 

#7 2010-03-15 11:32:48

weyk
メンバ
登録日: 2009-04-03

Re: ASCIIコード

sony5614 による投稿:

12ABCとは表示されますね。
echo '93D33C62A9' | perl -lne 'print pack("H*", $_)'
をした場合はなぜか
��<b�
と映ってしまいます。

であるなら、あなたが試しているキャラクターエンコードの環境では、その文字がが該当するということになります。
それ以上のこと(前提やどうなるはず といったこと)は、なにも書かれていないので、判りません。
試す/調べるとしたら、
・キャラクターエンコードを正しいものに修正する(なにが正しい(はずの)ものなのかは、本人にしかわかりません)
・本当にデータに誤りがないのか、確認する(もとのデータを知っている、本人にしかわかりませんし、他の人がすることも出来ません)
・本来、人間が読める文字(読むための文字コードのデータ)だったのかどうか を確認する(もともと読めるように作られて無いなら、どうやっても読めません。)
・元データを取得する際に、変化してしまっていないかを確認する。
あたりになるかと思います。

結局のところ、元のデータの出ところや、どう使われていたものなのかを総合的に判断して、どうすれば欲しかった形にできるのかを判断するしかありません。

オフライン

 

#8 2010-03-15 11:38:12

si
メンバ
From: hokkaido kitami, jp
登録日: 2007-01-15

Re: ASCIIコード

sony5614 による投稿:

12ABCとは表示されますね。
echo '93D33C62A9' | perl -lne 'print pack("H*", $_)'
をした場合はなぜか
��<b�
と映ってしまいます。

デフォルトの言語環境だと、 93, D3, A9 は、表示文字には有りません。
もし、Shift-JISコードならば、端末の表示を、Shift-JISに変えてみてください。
ただ、この場合も、A9 は�となります。
また、日本語以外の文字ならば、言語を変更してみてください。

オフライン

 

#9 2010-03-15 12:42:06

sony5614
メンバ
登録日: 2009-08-17

Re: ASCIIコード

文字の確認も含めて0からもう一度やり直して見ます。

オフライン

 

#10 2010-03-15 12:44:12

gontomo
メンバ
From: 北海道
登録日: 2010-02-17

Re: ASCIIコード

手軽に試したいのなら、バイナリエディタを使われてみてはいかがですか?
大概のものが表示部分のエンコードを指定できると思います。

Ubuntu用のは知りませんが、Windowsだとbzエディタとか。

オフライン

 

#11 2010-03-15 12:53:57

si
メンバ
From: hokkaido kitami, jp
登録日: 2007-01-15

Re: ASCIIコード

別解

予想される文字コードを標準のUTF-8に変換してみる
(CentOS5での結果ですので、Ubuntuとは一部異なる場合があります
$ echo '93D33C62A9' | perl -lne 'print pack("H*", $_)'|iconv -f CP932 -t UTF-8
噸<bゥ

オフライン

 

#12 2010-03-15 21:03:11

hir0
メンバ
登録日: 2008-09-28

Re: ASCIIコード

文字コードとは違う方向での話ですが「93D33C62A9」自体が間違いで予想した結果が返ってこないのでしたら
以前にインストールした?GHex(hex editor)の「検索」機能を使えば、任意の文字を入力すると16進数に変換、逆に調べたい16進数を入力すると(対応していれば)文字列に変換してくれます。

テキストファイル等を適当に読み込んで「メニュー」から「編集(E)」→「検索」で左の窓が16進数に、右の窓は文字列に対応していますので、どちらか一方に入力してみてください。

オフライン

 

#13 2010-03-16 11:02:30

sony5614
メンバ
登録日: 2009-08-17

Re: ASCIIコード

..<b.
と映りますね。

オフライン

 

#14 2010-03-16 12:39:25

gontomo
メンバ
From: 北海道
登録日: 2010-02-17

Re: ASCIIコード

このtopicの質問はもともと別にやりたいことがあって、それを実現していく過程で出てきた問題なのではないですか?
だとしたら、もともとやりたかったことも併せて書いたほうが回答が付きやすいんじゃないかと思います。

93,D3,A9はいわゆるASCIIコードの範囲内の値ではないので、少なくともこの3つはアルファベットで表示されることはありません。
他のみなさんもおっしゃる通り他のエンコードを適用することで意味のある文字に表示されるかもしれませんが、日本語が関連するエンコードではいずれもこの値の列で有意な文字になることはないようです。

オフライン

 

#15 2010-03-16 12:55:57

hir0
メンバ
登録日: 2008-09-28

Re: ASCIIコード

例えば#12で言う所の右の窓に、文字を入力すれば16進数で表示されます。
Ubuntuと入力すると 55 62 75 6E 74 75 と対応する値が表示されますが、任意の文字の値を調べたいのでは無く93 D3 3C 62 A9 を何らかの文字列に変換したいのでしたら#12はお望みの解答ではないようですね。

オフライン

 

Board footer

Powered by FluxBB