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

  • このエントリーをはてなブックマークに追加
  • LINEで送る
この記事は 2007年3月26日 に書かれたものです

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

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

- Sponsored Link -

サンプル

#!/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,')とする。

参考文献、ページ

このブログを応援する

お寄せいただいたお気持ちは全額サーバ代や次の記事を執筆するための原資として活用させていただいております。この記事が参考になった場合などぜひご検討ください。

PayPal(ペイパル)
PayPalで300円支払う
※金額は任意で変更できます。
※100円でも泣いて喜びますw
※住所の入力欄が現れた場合は「no needed」を選択ください
これまでのご協力者さま
- Sponsored Link -

ご質問やリクエストなどお気軽に。メールアドレスの入力は任意です。書き込みが反映されるまで時間がかかります。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください