2017-03-27 6 views
-3

"int word [10000]"のint配列があります。 4つの連続する数字が配列の1要素に対応するような方法が必要です。例えばC++でのバイトアドレッシングのアルゴリズム

(バイトアドレッシング):

0, 1 , 2 , 3 refers to word[0] 
4, 5 , 6 , 7 refers to word[1] 
8 , 9 , 10 , 11 refers to word[2] 
..... 
396, 397, 398, 399 refers to word[100] 

をハッシュマップまたは他のデータ構造を使用せず。 word

おかげ

+7

'index/4'を試しましたか? – dasblinkenlight

+0

単純な整数除算のようなものですか? '0/4 = 1/4 = 2/4 = 3/4 = 0'と' 4/4 = 5/4 = 6/4 = 7/4 = 1'、 – Jonas

+0

あなたが望む*実際の問題は何ですか?この "バイトアドレッシング"によって解決するには?あなたは実際に何を達成しようとしていますか? –

答えて

1

使用

unsigned char *bytes=static_cast<unsigned char*>(word); 
unsigned char first=bytes[0]; 
unsigned char second=bytes[1]; 

bytes意志指数10000*sizeof(int)バイトの配列として、あなたがすでにお使いのプラットフォームがsizeof(int)==4を持って知って表示されますけれども。

NB 1:sizeof(unsigned char)==1というルールがあります。バイトにアクセスする最も良い方法は、通常unsigned charです。

NB 2:あなたのプラットフォームがビッグエンディアンであろうとリトルエンディアンであろうと、bytes[0]が第1要素の最小または最重要バイトであるかどうかが決定されます(以下同様)。

関連する問題