62,614
社区成员
发帖
与我相关
我的任务
分享
public long bytesToLong(byte[] b) {
long l = ((long) b[0] << 56) & 0xFF00000000000000L;
// 如果不强制转换为long,那么默认会当作int,导致最高32位丢失
l |= ((long) b[1] << 48) & 0xFF000000000000L;
l |= ((long) b[2] << 40) & 0xFF0000000000L;
l |= ((long) b[3] << 32) & 0xFF00000000L;
l |= ((long) b[4] << 24) & 0xFF000000L;
l |= ((long) b[5] << 16) & 0xFF0000L;
l |= ((long) b[6] << 8) & 0xFF00L;
l |= (long) b[7] & 0xFFL;
return l;
}
long l = 3458914030446034124L;
byte[] b = new Long(l).toString().getBytes();
long ll = new Long(new String(b));
System.out.println(ll);
import java.nio.ByteBuffer;
public class Test{
public static void main(String[] args){
ByteBuffer buf = ByteBuffer.allocate(8);
long value = 3458914030446034124L;
buf.putLong(value);
buf.flip();
byte[] bs = buf.array();
long result = byte2Long(bs);
System.out.println(result);
}
private static long byte2Long(byte[] bs){
assert bs.length >= 8;
ByteBuffer buf = ByteBuffer.allocate(bs.length);
buf.put(bs);
buf.flip();
long result = buf.getLong();
return result;
}
private static long byte2Long_1(byte[] bs){
assert bs.length >= 8;
long result = 0L;
for(int i = 0 ; i < 8 ; i ++){
result += ((long)bs[i] << (7-i) * 8);
}
return result;
}
}