• ベストアンサー
  • すぐに回答を!

10進数の変換方法

  • 質問No.51671
  • 閲覧数1199
  • ありがとう数6
  • 気になる数0
  • 回答数4
  • コメント数0

お礼率 12% (35/274)

C言語にてゾーン10進数→パック進数、パック10進数→ゾーン10進数にする
簡単な方法ありませんか?

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

  • 回答No.3
  • ベストアンサー
どのレベルの質問かわかりませんが、4bit単位のアクセスが出来ると簡単に移行できるので、

union zone_t{
char a;
struct hb_t {
char l:4;
char h:4;
} hb;
} a[100]; /* this is for zone */
struct pack_t {
char b:4;
} b[50]; /* this is for pack */

みたいに4bit単位に操作できるように宣言してあげると、関数の中ではbit操作しなくてもいいから楽に処理できます。

一例として、zone -> pack
i = 0;
while (a[i].hb.h == 0x3) {
b[i].b = a[i].hb.l;
i++;
};
b[i].b = a[i].hb.h;

でしょうか。
ちゃんと動作は確認していないので、ちょっと自信ないですが。

その他の回答 (全3件)

  • 回答No.4
下のものですが、もしかしたら、
struct pack_t {
char b:4;
} b[50]; /* this is for pack */
だと、50byte使ってしまったような、、、
(仕様を忘れてしまいました。)
この場合は、やはりzoneと同じようにh,lみたいに2つ定義する必要があります。

では。
  • 回答No.2

ベストアンサー率 25% (7/27)

こんにちは。

C言語では、Pack/Unpackに対応した進数変換関数はありません。
ゾーンの場合であれば、EBCDICコードかJISコード化によって変わってきます。
ただ、ゾーンもパックも後ろのバイトに符号(+/-)がつきますので
規則性はありますので、自作するしかないのでは。

以下、私が作るとしたらと仮定して
1.必要なものをクラス化する。(Cであれば適せん修正)
  元の値の変数、ゾーン値変数、パック値変数、等の変数
  Base2Zone(...)関数、Base2Pack(...)、
  Zone2Pack(...)関数、Pack2Zone(...)、等の関数

関数の中は、ビット演算のあらしになりますが、それほど難しいものでは
ないと思います。
尚、大きな値を使用するようであればバイト数にも注意してください。
  • 回答No.1

ベストアンサー率 30% (25/83)

C言語には自信があるのですが、ゾーンとパックって何ですか?って感じで回答出来ないので補足して欲しいな。
結果を報告する
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。
関連するQ&A

その他の関連するQ&Aをキーワードで探す

ピックアップ

ページ先頭へ