• ベストアンサー

アルゴリズム解析をしてるのですが…

いくつかのperlを解説したページを読んでみたのですが、 以下の文でフォーマットとしての"%02x"の意味と 「^」(演算子?)の意味がわからずつまづいてます。 $val =~ s/./sprintf("%02x",ord($&)^ord($aaa[$i++ % @aaa])))/ge どなたか教えてください・・・

質問者が選んだベストアンサー

  • ベストアンサー
  • shigatsu
  • ベストアンサー率26% (511/1924)
回答No.1

これは出力のフォーマットですね。 まず x は16進数の小文字を出力する指示。その前の02ってには「左側にゼロを詰めた2桁」って意味です。 Cのリファレンスを探して printf の書式を調べてみてください。 検索してたらPHPのがヒットしましたが、意味は同じです。>参考URL

参考URL:
http://www.asakawa.ne.jp/doc/php/ja/sjis/function.sprintf.html
izk13
質問者

お礼

ありがとうございます。 Cと同じ意味なんですね。 左側に0を詰めた2桁ですか、なるほど。

その他の回答 (1)

  • AKIIRA
  • ベストアンサー率38% (15/39)
回答No.2

"%02x"についてはshigatsuさんが書いているとおりなので省略。 「^」は排他的論理和を表すビット論理演算子です。 この説明でわからなければ、コメントで補足してください。

izk13
質問者

お礼

ありがとうございます。 xorですね。 perlだと[^ABC]などとしたときに意味が違ってくるので、 何か複雑に考えてしまったようです。