• ベストアンサー

pack("C",0x61).pack("C",0x62)...を省略

$_=pack("C",0x61).pack("C",0x62).pack("C",0x68)... こういったバイナリ文字列をもっと簡単に$_=0x61.0x62.0x68のように書けませんか? $_=0x61.0x62.0x68ではうまくいきませんでした。

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

  • ベストアンサー
  • edualr
  • ベストアンサー率50% (1/2)
回答No.3

1行でできます。 $_=pack("C*",0x61,0x62,0x68);

参考URL:
http://polaris.isc.nipr.ac.jp/~yama/jare43/tohoho/wwwperl2.htm#pack
ninmurai
質問者

お礼

助かりました。変なのがついてたので。

その他の回答 (3)

  • leaz024
  • ベストアンサー率75% (398/526)
回答No.4

$_ = "\x61\x62\x68"; でいいような気も。

  • tatsu99
  • ベストアンサー率52% (391/751)
回答No.2

1行では出来ませんが $moji = "4142313261"; $data = pack("H" . length ($moji),$moji); ではどうでしょうか。 print "<$data>\n"; で結果を確認して下さい

  • feininger
  • ベストアンサー率41% (74/180)
回答No.1

例えば↓とか、 print chr(0x61).chr(0x62).chr(0x63); 長いバイナリなら 0x も省略して↓ではどうでしょう。 @str = ('61','62','63'); foreach (@str) {print pack('C',hex($_));} 生バイナリなら binmode STDOUT なども指定する必要があるかも。