dポイントプレゼントキャンペーン実施中!

Perlでデータの変換で方法がわからず、悩んでおります。

$moji_1 = "A5A2A5B9A5D9A5B9A5C8";


@moji_2 = (0xA5, 0xA2, 0xA5, 0xB9, 0xA5, 0xD9, 0xA5, 0xB9, 0xA5, 0xC8);


それぞれを変換するスマートな(関数や1行程度)でできる方法が知りたいのですが
わかりません。
packやunpack?を使えば、できるということでしょうか?

perlの取得がなかなかできずに悩んでおります。
Cがポインタが理解できれば初級をクリアしたといわれますが、
Perlの場合は、何をクリアすれば、初心者をクリアしたとなりますか?
皆さんの意見が知りたいです。

初級
中級
上級
達人
仙人
創始者 Perlを作った人
.
.
.

A 回答 (3件)

buffalomasaさんの回答では、うまくできないと思いますよ。



■ $moji_1 ⇒ @moji_2

@moji_2 = map{hex($_)}$moji_1=~/(..)/g;

■ @moji2 ⇒ $moji_1

$moji_1 = join('',map{sprintf('%02X',$_)}@moji_2);

配列、ハッシュ、リファレンスを自由に使いこなせるようになったら初心者脱出ではないでしょうか。
    • good
    • 0

#本当は、文字長や配列のサイズを調べないといけないけど省略


#@→$
@moji_2 = (0xA5, 0xA2, 0xA5, 0xB9, 0xA5, 0xD9, 0xA5, 0xB9, 0xA5, 0xC8);
$moji_1=uc(unpack("H20",pack("C10",@moji_2)));
print $moji_1 . "\n"; #点検

#$→@
@moji_2=unpack("C10",pack("H20",$moji_1));
foreach $x (@moji_2){ #点検
print sprintf "%02X\n",$x;
}
    • good
    • 0

#!/usr/local/bin/perl



$moji_1 = "A5A2A5B9A5D9A5B9A5C8";

@moji_2 = map { "0x$_" } $moji_1 =~ /(.\d)/g;

これでどうでしょうか?

Perlの場合、一番ややこしいのが正規表現だと思います。それを一通り使いこなせればまあ、Perlを使えると言えるのではないでしょうか?
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!