0

ints の配列をA指定して、配列から (バイト) インデックスで 1 バイトを抽出し、nそれを int variable に割り当てるC または Java コードを記述しますb

これはクラスの割り当ての一部です。これを開始する方法さえわかりません。どうにかして int 配列全体をバイト配列に変換し、それを取得してから int に戻す必要がありますか? または、配列内の各整数が 4 バイトであると考える必要があります。バイト インデックスを 4 で割って、それがどの整数に含まれているかを調べ、そこから何かを処理しますか?

私は答えを探しているのではなく、いくつかのガイダンスを探しています。ありがとう!

4

4 に答える 4

1

これを行う 1 つの方法は、最初に正しい int を見つけ、次にビットシフトを使用して目的のバイトを適切に配置し、最後に整数をバイナリと ( &) でマスクすることです。

Java とは異なり、C は のサイズを正確に 4 バイトに指定していないintため、ペダンティックな C ソリューションでは、プログラムで 4 バイト整数よりも大きな値を考慮する必要があることに注意してください。

これがあなたが望んでいた種類のガイダンスであることを願っています!

于 2013-11-09T20:35:02.300 に答える
0

質問が正しく理解できれば、まずビット単位のシフト演算子を使用して、インデックス配列要素>>から 1 バイトを取得できます。nth

 int single_element_byte = (number >> (i * 8)) & 0xff; 
 /* Where (0 <= i <= 3) - 0: First byte; 1: Second byte */

A次に、すべてのインデックスの配列をトラバースして、 nth1 バイトを超える計算を行うことができます。変数の内容はビッグ/リトルエンディアンである可能性があることに注意してください。それらが変更された場合、正しい値が保証されません。

于 2013-11-09T20:34:58.177 に答える
0

私が正しく理解している場合、ユーザーは、抽出するバイトの位置と、配列 A 内の int のインデックスを提供しますか?

私がした場合、配列から指定されたインデックスでint値を取得する必要があります。次に、int値をバイト配列(byte [])に変換してから、byte [n]で値を取得し、その値を元に変換する必要がありますint して "b" に格納する

于 2013-11-09T20:35:31.597 に答える
-1

ええと、C としてタグ付けしたので、C でのキャストを利用します。

1 文字は 1 バイトであることに注意してください。

したがって、int 配列を char* にキャストできます。

次に、任意のバイト インデックスで配列として char* にアクセスします。

有効なインデックスは、0 から sizeof( int ) * (int 配列の長さ) の範囲です。

ああ、intで答えが必要だからです。int answer = byteArray[index] と言うだけです

char は、最大値が 2^4 の単なる int です。

于 2014-02-26T19:35:09.163 に答える