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;
でしょうか。
ちゃんと動作は確認していないので、ちょっと自信ないですが。
No.4
- 回答日時:
下のものですが、もしかしたら、
struct pack_t {
char b:4;
} b[50]; /* this is for pack */
だと、50byte使ってしまったような、、、
(仕様を忘れてしまいました。)
この場合は、やはりzoneと同じようにh,lみたいに2つ定義する必要があります。
では。
No.2
- 回答日時:
こんにちは。
C言語では、Pack/Unpackに対応した進数変換関数はありません。
ゾーンの場合であれば、EBCDICコードかJISコード化によって変わってきます。
ただ、ゾーンもパックも後ろのバイトに符号(+/-)がつきますので
規則性はありますので、自作するしかないのでは。
以下、私が作るとしたらと仮定して
1.必要なものをクラス化する。(Cであれば適せん修正)
元の値の変数、ゾーン値変数、パック値変数、等の変数
Base2Zone(...)関数、Base2Pack(...)、
Zone2Pack(...)関数、Pack2Zone(...)、等の関数
関数の中は、ビット演算のあらしになりますが、それほど難しいものでは
ないと思います。
尚、大きな値を使用するようであればバイト数にも注意してください。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Integer変数をカラにしたいので...
-
リッチテキストボックスの中身...
-
typedefをプログラム中で解除す...
-
「#undef」と「#define」の使い...
-
1バイトデータの読み出しについて
-
日付チェック関数について
-
構造体のポインタにNULLが入らない
-
命名規則 VB 構造体
-
VBAの変数のデータ型を変更する...
-
VBAのプログラムで、DIAG = 1# ...
-
Excelですべての組合せ(重複組...
-
C言語において、 配列要素をひ...
-
C言語 配列の長さの上限
-
CStringからchar*への型変換に...
-
isalpha()関数について
-
配列を使わずに、変数名を動的...
-
C言語の配列のサイズ
-
Run-Time Check Failure #3とい...
-
C# Listを使わずに2次元配列の...
-
define で 配列
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAのプログラムで、DIAG = 1# ...
-
Integer変数をカラにしたいので...
-
「#undef」と「#define」の使い...
-
リッチテキストボックスの中身...
-
構造体のデータを丸ごとコピー...
-
構造体の初期化方法について
-
C言語 構造体の中に共用体を定...
-
構造体にする理由・利点・使用例
-
VBAの変数のデータ型を変更する...
-
命名規則 VB 構造体
-
VBAにてcolorindexを変数に格納...
-
aspでユーザー定義の構造体を作...
-
charとucharの違い
-
typedefをプログラム中で解除す...
-
long型のデータをバイト型の配...
-
構造体のポインタにNULLが入らない
-
値が代入されてない時
-
C++ 構造体の一括初期化 {0}
-
整数から16進数への変換 現在c...
-
関数の引数の順番の混乱を回避...
おすすめ情報