问题
I'm stuck with interpreting a response from a C server to my java application. Hoping that the C server is responding to my java in BIG_ENDIAN format, my question is how would I convert the response to an Integer
. I'm pasting the response I got from the the C server and wondering how would I do "be64toh" function in java.
Response from the C server -
^@^@^@^@^@^@^@^@^@^@^@^@^@^@^H^@^@^@^@^@^A^A^B^@^@^@^N^@^@^@^@^@^@^@^@^@^@^@^H^@^@^@^@^@^@^@^A^@^@^@^K^@^@^@^@^@^@^@^@^@^@^@<80>^@^@^@^@^@^@^BÃ^@^@^@^AYour request is successfully registered with us and is under processing.^@^@^@^@^D^@^@^@^@^@^@^@¨ýf^@^@^@^@^@mX@^@^@^@^@^@^@^@^@^N^@^@^@^@^@^@^@^@^@^@^@^H
I'm not sure how to interpret the non readable bytes and when converted to hexadecimal most of them are null
but few of them are filled with data just like the ^H
, ^A
etc.. Can you please help me find a solution for this one.
回答1:
Suppose you have a java.nio.SocketChannel to read from, you can use a ByteBuffer to do the conversion:
private static final int BUFFER_SIZE = 1024;
ByteBuffer readBuffer = ByteBuffer.allocate(BUFFER_SIZE).order(ByteOrder.BIG_ENDIAN);
int bytesRead = socketChannel.read(readBuffer);
readBuffer.flip();
Now you can read your data out of the buffer, e.g.:
int someInt = readBuffer.getInt();
long someLong = readBuffer.getLong();
来源:https://stackoverflow.com/questions/11521830/network-byte-order-to-host-byte-order-in-java