public static byte[] doubleToByteWithMark(double d) {
		long x = Double.doubleToLongBits(d);
		if((x & 0xFFFFFFFFFFFFFF00L) == 0L){
			return new byte[]{XsonConst.DOUBLE1, (byte) x};
		}else if((x & 0xFFFFFFFFFFFF0000L) == 0L){
			return new byte[]{XsonConst.DOUBLE2, (byte) (x >> 8), (byte) x};
		}else if((x & 0xFFFFFFFFFF000000L) == 0L){
			return new byte[]{XsonConst.DOUBLE3, (byte) (x >> 16), (byte) (x >> 8), (byte) x};
		}else if((x & 0xFFFFFFFF00000000L) == 0L){
			return new byte[]{XsonConst.DOUBLE4, (byte) (x >> 24), (byte) (x >> 16), (byte) (x >> 8), (byte) x};
		}else if((x & 0xFFFFFF0000000000L) == 0L){
			return new byte[]{XsonConst.DOUBLE5, (byte) (x >> 32), (byte) (x >> 24), (byte) (x >> 16), (byte) (x >> 8), (byte) x};
		}else if((x & 0xFFFF000000000000L) == 0L){
			return new byte[]{XsonConst.DOUBLE6, (byte) (x >> 40), (byte) (x >> 32), (byte) (x >> 24), (byte) (x >> 16), (byte) (x >> 8), (byte) x};
		}else if((x & 0xFF00000000000000L) == 0L){
			return new byte[]{XsonConst.DOUBLE7, (byte) (x >> 48), (byte) (x >> 40), (byte) (x >> 32), (byte) (x >> 24), (byte) (x >> 16), (byte) (x >> 8), (byte) x};
		}
		return new byte[]{XsonConst.DOUBLE, (byte) (x >> 56), (byte) (x >> 48), (byte) (x >> 40), (byte) (x >> 32), (byte) (x >> 24), (byte) (x >> 16), (byte) (x >> 8), (byte) x};
	}