-PR-
解決
済み

10進数の変換方法

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

お礼率 12% (35/274)

C言語にてゾーン10進数→パック進数、パック10進数→ゾーン10進数にする
簡単な方法ありませんか?
通報する
  • 回答数4
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

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

  • 回答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;

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

その他の回答 (全3件)

  • 回答No.1
レベル9

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

C言語には自信があるのですが、ゾーンとパックって何ですか?って感じで回答出来ないので補足して欲しいな。
C言語には自信があるのですが、ゾーンとパックって何ですか?って感じで回答出来ないので補足して欲しいな。


  • 回答No.2
レベル7

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

こんにちは。 C言語では、Pack/Unpackに対応した進数変換関数はありません。 ゾーンの場合であれば、EBCDICコードかJISコード化によって変わってきます。 ただ、ゾーンもパックも後ろのバイトに符号(+/-)がつきますので 規則性はありますので、自作するしかないのでは。 以下、私が作るとしたらと仮定して 1.必要なものをクラス化する。(Cであれば適せん修正)   元の値の変 ...続きを読む
こんにちは。

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

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

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

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

では。
このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

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

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ