アプリ版:「スタンプのみでお礼する」機能のリリースについて

Perlで以下の16進数の連続した文字列を
db444500

配列に入れて後からわかりやすい16進数で表示させたり、

foreach (@list){
print sprintf("%02X ", $_);
}

直接文字列として、
0xdb, 0x44, 0x45, 0x00
と表示させるには、どのような書き方をすれば良いのでしょうか?

A 回答 (2件)

数値として配列に挿入するには:


前から2文字ずつ切り出して、hex関数で数値に変換してあげればいいです。

直接文字列として表示するには:
s/([0-9a-f]{2})/0x\1,/g
と正規表現を書いて置換します。
0-Fまでの文字2つの前後を"0x"と","で括って置換しています。


$hex = "db444500";

# 数値として配列に挿入
$count = 0;
while($count < length($hex))
{
push(@list,hex(substr($hex,$count,2)));
$count += 2;
}

foreach (@list){
print sprintf("%02X ", $_);
}

# 直接文字列として表示

$hex2 = $hex;

$hex2 =~ s/([0-9a-f]{2})/0x\1,/g;
chop $hex2; # 最後のコンマを削除する
print "hex2 = $hex2\n";
    • good
    • 0

$hexstrs = "db444500";


@list=unpack("C*", pack("H*",$hexstrs));
foreach (@list){
printf "%02X\n",$_;
}
#直接表示の意味を勘違いしてたらすみません
for($i=0;$i<length($hexstrs);$i+=2){
print "0x". substr($hexstrs, $i, 2) . "\n";
}
    • good
    • 0

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