Java相当于ntohll函数

时间:2014-01-21 14:45:13

标签: java c++ type-conversion endianness

Java中是否有等效的ntohll C ++函数?

ntohll的引用可在此处找到:ntohll function

问题是我需要将64位长的TCP / IP网络顺序转换为小端长。

2 个答案:

答案 0 :(得分:4)

ntohll的java等价函数是:long相当于64位

    import java.nio.ByteBuffer;
    import java.nio.ByteOrder;

   public long ntohll(long convert)
    {
            ByteBuffer bbuf = ByteBuffer.allocate(8);  
            bbuf.order(ByteOrder.BIG_ENDIAN);  
            bbuf.putLong(convert);  
            bbuf.order(ByteOrder.LITTLE_ENDIAN);  
            return bbuf.getLong(0); 
    }

答案 1 :(得分:2)

Java已经使用网络字节顺序,因此无需转换它们(这就是Java中不存在这些函数的原因)。

<强>更新

由于您正在读取小端位模式的文件,因此如果您使用的是JDK,则必须编写自己的(或使用库)。 1.5。如果您使用的是JDK 1.5或更高版本,则可以对整数对象使用reverseBytes方法:

long data = Long.reverseBytes(some_data);