[Perl]初心者です。 文字列”あいうえお”が与えられたとします。EUC-JP形式になっている先頭の”あ”を 42146という数値にPerl上で変換するやり方を教えて下さい。末尾の"お"も同様にして当該数値に変換したいです。

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:
  • 終了:2008/03/17 02:53:23
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:haruo-31 No.1

回答回数80ベストアンサー獲得回数10

ポイント60pt

手元の環境はUTF8だったので、ちょっと自信が無いですが、

↓試してみて下さい。


use strict;
use warnings;

my $str='あいうえお';

my @codes=unpack('C*', $str);
my @results;

while($#codes>0) {
	my $c=shift(@codes);
	$c=$c*128+shift(@codes) if $c>127;
	push @results, $c;
}

print join("\t", @results);

pack / unpack が使えます。

http://www.rfs.jp/sb/perl/05/pack.html

id:tententireman

どうもありがとうございます。unpackという関数を使うのですか。

せっかく教わったのに恐縮ですが、現在テストできる環境にないため

是非後日、試してみたいと思います。

2008/03/17 02:53:07
  • id:haruo-31
    すみません…酔っぱらって書いてたので、ちょっと間違えました。(滝汗)

    $c=$c*128+shift(@codes) if $c>127; ですが、
    $c=$c*256+shift(@codes) if $c>127; の間違いです。

    テスト結果もちゃんとはっつけます。
    ---

    sh-3.1$ perl test2.pl
    42146 42148 42150 42152 42154sh-3.1$


この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません