
No.5ベストアンサー
- 回答日時:
面倒なことしてるねぇ>#4.
Perl のバージョンにもよるけど今のやつなら
$y = (sprintf '%X', $x) =~ s/^(\d+)([CDF])$/($2 eq 'D' ? -1 : 1) * $1/er;
の 1行でいけるんじゃないかなぁ.

No.4
- 回答日時:
うーん。
もしかして、COBOLのCOMP-3形式を10進数に変換したいのでしょうか。http://wtar00.seesaa.net/article/430725080.html
そうでしたら以下のようになります。
#Convert COBOL COMP-3 into decimal.
$var1 = 0x00100C;
$var2 = 0x00100D;
$var3 = 0x00100F;
&conv($var1);
&conv($var2);
&conv($var3);
$var1 = 0x12345C;
$var2 = 0x67890D;
$var3 = 0x54321F;
&conv($var1);
&conv($var2);
&conv($var3);
sub conv
{
my ($data) = shift(@_);
printf("in=%0X\n",$data);
#符号を決定
my $sign = 1;
if (($data & 0x0f) == 0x0d){
$sign = -1;
}
$data = $data >> 4;
my $val = 0;
my @array = ();
while($data > 0){
push(@array,($data & 0x0f));
$data = $data >> 4;
}
for(my $i = scalar(@array)-1; $i >= 0; $i--){
$val = 10 * $val + $array[$i];
}
$val *= $sign;
printf("out=%d\n",$val);
}
------------------------------
convの入力データがCOMP-3形式です。
conv内の$valが変換結果です。
符号なしのケースと符号あり+のケースは、同じ扱い(+)となります。
以下、実行結果です。
ーーーーーーーーーーーーーーーーー
in=100C
out=100
in=100D
out=-100
in=100F
out=100
in=12345C
out=12345
in=67890D
out=-67890
in=54321F
out=54321
No.3
- 回答日時:
#2 で書かれていますが Perl の数値データはすべて「符号付き」です. 「符号なし」という形式の数値データは存在しません.
で 3つだけならハッシュが一番簡単だろうねぇ.

No.2
- 回答日時:
perlでは、符号付きと符号なしを区別していません。
$xに+100を設定する場合と
$xに100を設定する場合は、どのようになりますか。
あなたが期待しているのは、
$x = +100;
$x = 100;
ということでしょうか。
No.1
- 回答日時:
確認です.
・+100 と (+ も - も付かない) 100 とは, なにがどう違うのでしょうか?
・この 3つの値だけを考えればいいのでしょうか? そうでないとしたら, 何をどのように変換すればいいのですか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
INDIRECT 横に再度抽出したい
-
Strawberry Perl for Windows ...
-
perlのプログラミング 部分入れ...
-
Perlでファイルの末尾から指定...
-
perl の open について教えてく...
-
Perl言語について。
-
ファイルをディレクトリ分配の...
-
アルファベットに付いて質問し...
-
#!/usr/bin/perlで書きだしたCG...
-
Perlのエラーについてご教授く...
-
perlのflock関数でロックをかけ...
-
AI sisterとは、偽物の人ですか?
-
bashスクリプト
-
ファイルアイコンの左下に緑の□...
-
perlプログラミング 空白行削除
-
perlでリテラル値はメモリにど...
-
perlで2次元配列をサブルーチ...
-
Perlで時間の計算
-
perlについて
-
perlのrequireの動き方について...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
テキストファイルで提出とは?
-
Perlのエラーについてご教授く...
-
perlをバージョンアップしたら...
-
Perlで時間の計算
-
Wallpaper Engineでおすすめの...
-
Perl言語について。
-
perlで2次元配列をサブルーチ...
-
Strawberry Perl for Windows ...
-
#!/usr/bin/perlで書きだしたCG...
-
perl の open について教えてく...
-
INDIRECT 横に再度抽出したい
-
アルファベットに付いて質問し...
-
openした後、closeしないでプロ...
-
画像が表示でnull; this.src
-
VBA変数をFunction.VLookupの戻...
-
perlのflock関数でロックをかけ...
-
Perl の外部モジュールの利用方法
-
TeraPadエディターの操作方法に...
-
bashスクリプト
-
perlの構文でカンマの意味が分...
おすすめ情報
≫・+100 と (+ も - も付かない) 100 とは, なにがどう違うのでしょうか?
符号つきのデータ形式か符号なしのデータ形式かの違いとなります
≫この 3つの値だけを考えればいいのでしょうか?
はい、この3つだけです
≫何をどのように変換すればいいのですか?
0x00100C → +100 (HEXのCを+、HEXの00100を100)
0x00100D → -100 (HEXのDを-、HEXの00100を100)
0x00100F → 100 (HEXのFを無視、HEXの00100を100)
宜しくお願い致します m(_)m