in hessian-lite/src/main/java/com/alibaba/com/caucho/hessian/io/Hessian2Output.java [689:731]
public void writeLong(long value)
throws IOException {
int offset = _offset;
byte[] buffer = _buffer;
if (SIZE <= offset + 16) {
flushBuffer();
offset = _offset;
}
if (LONG_DIRECT_MIN <= value && value <= LONG_DIRECT_MAX) {
buffer[offset++] = (byte) (value + BC_LONG_ZERO);
} else if (LONG_BYTE_MIN <= value && value <= LONG_BYTE_MAX) {
buffer[offset++] = (byte) (BC_LONG_BYTE_ZERO + (value >> 8));
buffer[offset++] = (byte) (value);
} else if (LONG_SHORT_MIN <= value && value <= LONG_SHORT_MAX) {
buffer[offset++] = (byte) (BC_LONG_SHORT_ZERO + (value >> 16));
buffer[offset++] = (byte) (value >> 8);
buffer[offset++] = (byte) (value);
} else if (-0x80000000L <= value && value <= 0x7fffffffL) {
buffer[offset + 0] = (byte) BC_LONG_INT;
buffer[offset + 1] = (byte) (value >> 24);
buffer[offset + 2] = (byte) (value >> 16);
buffer[offset + 3] = (byte) (value >> 8);
buffer[offset + 4] = (byte) (value);
offset += 5;
} else {
buffer[offset + 0] = (byte) 'L';
buffer[offset + 1] = (byte) (value >> 56);
buffer[offset + 2] = (byte) (value >> 48);
buffer[offset + 3] = (byte) (value >> 40);
buffer[offset + 4] = (byte) (value >> 32);
buffer[offset + 5] = (byte) (value >> 24);
buffer[offset + 6] = (byte) (value >> 16);
buffer[offset + 7] = (byte) (value >> 8);
buffer[offset + 8] = (byte) (value);
offset += 9;
}
_offset = offset;
}