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[] ?
3 Answers
You could use the toPrimitive method in the Apache Commons lang library ArrayUtils class?
Comments
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 :)
Comments
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.
3 Comments
Huckle
My 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.Tomas Vinter
I'd say this is an interesting comment to the question rather than an answer.
Peter Lawrey
@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. ;)
toLowerCase()on the string"Byte[]". Yeah, I know, by explaining it, I ruined the joke.