示例#1
0
 private void WriteBignumValue(BigInteger/*!*/ value) {
     char sign;
     if (value.Sign > 0) {
         sign = '+';
     } else if (value.Sign < 0) {
         sign = '-';
     } else {
         sign = '0';
     }
     _writer.Write((byte)sign);
     uint[] bits = value.GetWords();
     int n = bits.Length * 2, mn = bits.Length - 1;
     bool truncate = false;
     if (bits.Length > 0 && (bits[mn] >> 16) == 0) {
         n--;
         truncate = true;
     }
     WriteInt32(n);
     for (int i = 0; i < bits.Length; i++) {
         if (truncate && i == mn) {
             _writer.Write(unchecked((ushort)(bits[i])));
         } else {
             _writer.Write(bits[i]);
         }
     }
 }