Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何从给定字节索引的int数组中提取单个字节?_Java_C_Arrays_Int_Byte - Fatal编程技术网

Java 如何从给定字节索引的int数组中提取单个字节?

Java 如何从给定字节索引的int数组中提取单个字节?,java,c,arrays,int,byte,Java,C,Arrays,Int,Byte,给定一个int数组A,编写C或Java代码,从(字节)索引n处的数组中提取单个字节,并将其分配给int变量b 这是课堂作业的一部分。我甚至不知道该怎么开始。我是否需要以某种方式将整个int数组转换为字节数组,将其取出,然后将其转换回int?或者我应该认为数组中的每个整数是4字节。我会把字节索引除以4,找出它是哪个整数,然后从那个里开始计算 我不是在寻找答案,只是寻求一些指导。谢谢 如果我答对了问题,首先您可以使用按位移位运算符>从n索引数组元素中获取单个字节 int single_elemen

给定一个int数组
A
,编写C或Java代码,从(字节)索引
n
处的数组中提取单个字节,并将其分配给int变量
b

这是课堂作业的一部分。我甚至不知道该怎么开始。我是否需要以某种方式将整个int数组转换为字节数组,将其取出,然后将其转换回int?或者我应该认为数组中的每个整数是4字节。我会把字节索引除以4,找出它是哪个整数,然后从那个里开始计算


我不是在寻找答案,只是寻求一些指导。谢谢

如果我答对了问题,首先您可以使用按位移位运算符
>
n
索引数组元素中获取单个字节

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

/*其中(0一种方法是首先找到正确的int,然后使用bitshift正确对齐所需的字节,最后使用二进制and(
&
)屏蔽整数

请注意,与Java不同,C没有将
int
的大小指定为正好四个字节,因此迂腐的C解决方案将要求您的程序考虑大于4字节的整数


我希望这是您想要的指导!

如果我理解正确,用户会给您要提取的字节位置和数组A中int的索引

如果我这样做了,那么您应该从数组中获取给定索引处的int值 然后您应该将int值转换为byte数组(byte[]),然后在byte[n]处获取值
将其值转换回int并存储在“b”中,因为您将其标记为C。我将利用C中的强制转换

请注意,一个字符是一个字节

所以我们可以将int数组转换为char*

然后在任何给定的字节索引处以数组的形式访问char*

有效索引的范围为0到sizeof(int)*(int数组长度)

哦,因为你需要一个整数的答案。只要说int-answer=byteArray[index]

char是一个最大值为2^4的整数