There is Vector and DataOutputStream. I need to write bytes from Vector (toArray returns Byte[]) to the stream, but it understands byte[] only. How to convert Byte[] to byte[] ?
Asked
Active
Viewed 5.4k times
3 Answers
29
You could use the toPrimitive method in the Apache Commons lang library ArrayUtils class?

Vitaly Olegovitch
- 3,509
- 6
- 33
- 49

tim_yates
- 167,322
- 27
- 342
- 338
9
byte[] toPrimitives(Byte[] oBytes)
{
byte[] bytes = new byte[oBytes.length];
for(int i = 0; i < oBytes.length; i++) {
bytes[i] = oBytes[i];
}
return bytes;
}
Inverse:
// byte[] to Byte[]
Byte[] toObjects(byte[] bytesPrim) {
Byte[] bytes = new Byte[bytesPrim.length];
int i = 0;
for (byte b : bytesPrim) bytes[i++] = b; // Autoboxing
return bytes;
}
freeone3000 contributed in this answer :)

CAMOBAP
- 5,523
- 8
- 58
- 93

jacktrades
- 7,224
- 13
- 56
- 83
2
A Vector<Byte> is about as inefficient structure as you could use to store bytes. I would serious consider using something more efficient line ByteArrayOutputStream which has a toByteArray() method. i.e. don't just convert the Vector but remove it from the code.

Peter Lawrey
- 525,659
- 79
- 751
- 1,130
-
1My only contention with this is that any writes to the ByteArrayOutputStream now require `try{}catch(){}` for no real reason other than that it inherits from OutputStream. – Huckle Apr 09 '13 at 21:02
-
I'd say this is an interesting comment to the question rather than an answer. – Tomas Vinter Jun 19 '13 at 07:54
-
@TomasVinter For me, sometimes the best answer is don't do that, do this instead. i.e. you are just making a bad idea worse. ;) – Peter Lawrey Jun 19 '13 at 12:43