17

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[] ?

2
  • 2
    @Nick is joking. You may note that he is calling toLowerCase() on the string "Byte[]". Yeah, I know, by explaining it, I ruined the joke. Commented Jun 21, 2011 at 19:31
  • @Oded explanations of jokes are funny in themselves :) Commented Jun 21, 2011 at 19:55

3 Answers 3

30

You could use the toPrimitive method in the Apache Commons lang library ArrayUtils class?

Sign up to request clarification or add additional context in comments.

Comments

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 :)

Comments

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.

3 Comments

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.
I'd say this is an interesting comment to the question rather than an answer.
@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. ;)

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.