C++ C+中的字节寻址算法+;

C++ C+中的字节寻址算法+;,c++,algorithm,C++,Algorithm,我得到了一个int数组“int word[10000]”。我需要一种方法,使4个连续的数字对应于数组的1个元素。(字节寻址) 例如: 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] 不使用哈希映射或任何其他数据结构 谢谢使用 unsigned char *byte

我得到了一个int数组“int word[10000]”。我需要一种方法,使4个连续的数字对应于数组的1个元素。(字节寻址)

例如:

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]
不使用哈希映射或任何其他数据结构

谢谢使用

unsigned char *bytes=static_cast<unsigned char*>(word);
unsigned char first=bytes[0];
unsigned char second=bytes[1];
unsigned char*bytes=static_cast(字);
第一个无符号字符=字节[0];
无符号字符秒=字节[1];
bytes
将通过
word
作为
10000*sizeof(int)
字节数组进行索引,尽管您似乎已经知道您的平台具有
sizeof(int)==4

注1:有一条规则,
sizeof(unsigned char)==1
。访问字节的最佳方式通常是通过
无符号字符


注意2:您的平台是大还是小endian将决定
字节[0]
是否是第一个元素的最低或最高有效字节(依此类推)。

您是否尝试过
索引/4
?像简单的整数除法一样
0/4=1/4=2/4=3/4=0
4/4=5/4=6/4=7/4=1
,您希望通过这种“字节寻址”解决的实际问题是什么?“你到底想做什么?”某个程序员正在制作一个内存模拟器,我在其中存储32位整数,我希望能够将每个字节分别存储在单词中。然后你可能想使用指针而不是简单的除法。例如,
uint8\u t*p=reinterpret\u cast(单词)p[0]
获取第一个字节。它不应该破坏严格的别名,因为存在允许它通过指向
char
的指针的异常。