Hacker News new | past | comments | ask | show | jobs | submit login

I guess you are right, because I don't even understand what you mean?



He wants fine control over memory allocation.

Most people who want that much control use C or C++.


struct MyStruct { int a; } ;

char bytes[]={0,1,0,0};

MyStruct *myStruct=((MyStruct [asterisk] )bytes);

...myStruct->a is now 256.

How do you format code here?


I see - I am glad that Java does not support that ;-)

Presumably what you want can be achieved with ByteArrayInputStream and DataInputStream.

    byte[] bytes = {0,1,0,0};
    DataInputStream in = new DataInputStream(new ByteArrayInputStream(bytes));
    int a = in.readInt();
    in.close();
untested, but something like that... There is also object serialization. I never had a use case for what you describe.

(format code with 4 leading spaces)


object serialization is horribly inefficient in java.


Guess how many CPU cycles my C code requires.


What time sensitive operation requires you to transform byte arrays into objects? I assumed something like reading from disk or network, and then CPU cycles are usually not the bottleneck.

Anyway, no doubt that you can write faster code in C, but I am glad that I did not have to look at pointer arithmetic for the last 8 years. Using your array->struct technique would be a major headache if the struct get's more complex.


There are plenty of other practical use cases for this kind of control. For example, casting an array of byte[]s to an array of int[]s. It's not hard to convert using a ByteBuffer, but its still annoying. You and up duplicating a ton of memory for no good reason.


You're assuming a 32-bit little-endian system.

Indent at least two spaces for code.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: