int factor = dec.precision() - dec.scale();
factor = sign == 1 ? factor : -factor;
// convert the absolute big decimal to string
dec.scaleByPowerOfTen(Math.abs(dec.scale()));
String digits = dec.unscaledValue().toString();
// finally write out the pieces (sign, scale, digits)
writeByte(buffer, (byte) ( sign + 1), invert);
writeByte(buffer, (byte) ((factor >> 24) ^ 0x80), invert);
writeByte(buffer, (byte) ( factor >> 16), invert);