« ハッシュのキーを挿入(追加)した順番通りに取り出す | メイン | CPANからモジュールをインストールする(Linux, 'perl -MCPAN -e shell') »

カテゴリー:文字列 

文字列を文字コードへ変換する

このエントリーを含むはてなブックマーク  livedoorクリップ  文字列を文字コードへ変換するをdel.icio.usに追加  文字列を文字コードへ変換するをYahoo!ブックマークに追加  文字列を文字コードへ変換するをニフティクリップに追加

「文字」を文字コードへ変換するにはord関数を用いれば良いが、「文字列」の場合はどうすれば良いのだろうか?ord関数の使い方を工夫してやれば良い。

単純に1byteずつ置換してやれば良い。この置換時にord関数を用いることになる。

#!/usr/bin/perl

;#
;#文字列の文字コードを取得
;#

use strict;

#-- 文字コードを取得 --#
print String2Bytes($ARGV[0]), "\n";


#--------------------------------------------#
#文字列の文字コードを取得する
#--------------------------------------------#
sub String2Bytes {
    my $str = shift || return(undef);
    my $fmt = shift || '%X';

    $str =~ s/(.)/sprintf($fmt, ord($1))/eg;

    return($str);
}


○実行結果
$ ./str2byt.pl abc
616263
$ ./str2byt.pl あいうえお
A4A2A4A4A4A6A4A8A4AA


eオプションは、置換文字列を正規表現ではなくPerlの構文として処理してくれる。gオプションはすべての該当する検索文字列を対象とする、という意味になる。gオプションをつけないとすべて変換されない点に注意。

ここでは16進数で結果が返ってきているが、第二引数にsprintfのフォーマットを指定すればそれが適用される。もし10進数で取得したいなら「String2Bytes($ARGV[0], '%d')」などとすれば良い。カンマ区切りで見たいなら(最後にカンマが余るが)「String2Bytes($ARGV[0], '%d,')」とする。



■参考文献、ページ
Perlで文字列をHTML数値文字参照に変換
はてな:日本語文字列をHTMLエンティティに変換したいのですが、どうやってもうまくいきません。どうやればいいのか教えてください。




トラックバック

このエントリーのトラックバックURL:
http://katsubemakito.net/mt/mt-tb.cgi/607

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)

VPSレンタルサーバー




クリエイティブ・コモンズ・ライセンス
このブログは、次のライセンスで保護されています。 クリエイティブ・コモンズ・ライセンス.