任何人都知道如何在java中将大量字节(例如1000字节)转换为int/long等?将字节转换为int,反之亦然
1
A
回答
2
您可以使用一个循环
byte[] bytes =
int[] ints = new int[bytes.length];
for(int i=0;i<bytes.length;i++)
ints[i] = bytes[i];
一个1000元最多可能需要10微秒这种方式。
+2
远远少于现代PC上的。 – 2011-02-25 16:49:12
+0
是真实的,但如果10微秒听起来不是很长时间,那么它并不重要。 ;) – 2011-02-25 16:50:44
2
要将byte
转换为Java中的int
,你有两个选择:
byte val = 0xff;
int a = val; // a == -1
int b = (val & 0xff); // b == 0xff
有Java库都没法阵列从一个原始类型转换为另一种,你必须手动做。
0
谢谢Paŭlo。以下是更正的答案:
public class Main {
public static int[] convert(byte[] in) {
int bytesPerSample = 4;
int[] res = new int[in.length/bytesPerSample];
for (int i = 0; i < res.length; i++) {
int bOffset = i * bytesPerSample;
int intVal = 0;
for (int b = 0; b < bytesPerSample; b++) {
int v = in[bOffset + b];
if (b < bytesPerSample - 1) {
v &= 0xFF;
}
intVal += v << (b * 8);
}
res[i] = intVal;
}
return res;
}
public static byte[] convert(int[] in) {
int bytesPerSample = 4;
byte[] res = new byte[bytesPerSample * in.length];
for (int i = 0; i < in.length; i++) {
int bOffset = i * bytesPerSample;
int intVal = in[i];
for (int b = 0; b < bytesPerSample; b++) {
res[bOffset + b] = (byte) (intVal & 0xFF);
intVal >>= 8;
}
}
return res;
}
public static void main(String[] args) {
int[] in = {33, 1035, 8474};
byte[] b = convert(in);
int[] in2 = convert(b);
System.out.println(Arrays.toString(in2));
}
}
相关问题
- 1. 将int值转换为3字节数组(反之亦然)
- 2. 将两个字节转换为一个字节,反之亦然
- 3. 将字节数组转换为字符串,反之亦然
- 4. 将PDF转换为字节数组和反之亦然android
- 5. 在golang中将[] uint32转换为[]字节,反之亦然
- 6. 在c#中将Uint64转换为5字节,反之亦然#
- 7. 将位图转换为字节,反之亦然
- 8. 如何将pandas DataFrame转换为字节,反之亦然?
- 9. 将数组数组转换为字节,反之亦然C#
- 10. 将字节数转换为灰度和反之亦然
- 11. 将ansi转换为utf8,反之亦然
- 12. 将float2转换为double2,反之亦然
- 13. 将lonlat转换为xyz,反之亦然
- 14. 将NSString转换为NSData,反之亦然
- 15. 将HTML转换为Xliff,反之亦然
- 16. 将JavaUtilDate转换为NSDate,反之亦然?
- 17. 将RSAPrivateKey转换为PrivateKey,反之亦然
- 18. 将int转换为void *或反之亦然?
- 19. 如何将int []转换为OpenCV Mat? (反之亦然)
- 20. C++ |将int转换为byte [4],反之亦然
- 21. 从unsigned long int转换为signed int,反之亦然
- 22. 在python中将字母数字字符串转换为int,反之亦然
- 23. RSA加密/解密转换字节[]为String,反之亦然
- 24. 转换为字节阵列,反之亦然
- 25. 转换图像为字节数组和反之亦然
- 26. 如何在Linux(gcc)中将int转换为字符/字符串,反之亦然?
- 27. C++将存储为char *的4个字符转换为int,反之亦然
- 28. 将列转换成行,反之亦然
- 29. 转换Unicode字符串,反之亦然
- 30. 将字符串转换为数字,反之亦然C(NOT C++)
int是32位(4字节),long是64位(8字节)。你会如何处理996(或992)其他字节的数组?你真的想做什么? – 2011-02-25 16:44:21