network byte order to host byte order in java

独自空忆成欢 提交于 2019-12-13 03:53:27

问题


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

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!