1 /* mpz_out_raw -- Output a MP_INT in raw, but endianess-independent format.
3 Copyright (C) 1991, 1992 Free Software Foundation, Inc.
5 This file is part of the GNU MP Library.
7 The GNU MP Library is free software; you can redistribute it and/or modify
8 it under the terms of the GNU General Public License as published by
9 the Free Software Foundation; either version 2, or (at your option)
12 The GNU MP Library is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 GNU General Public License for more details.
17 You should have received a copy of the GNU General Public License
18 along with the GNU MP Library; see the file COPYING. If not, write to
19 the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
28 mpz_out_raw (FILE *file, const MP_INT *x)
37 mp_size xsize = x->size;
39 mp_size out_size = xsize * BYTES_PER_MP_LIMB;
41 /* Make the size 4 bytes on all machines, to make the format portable. */
42 for (i = 4 - 1; i >= 0; i--)
43 fputc ((out_size >> (i * BITS_PER_CHAR)) % (1 << BITS_PER_CHAR), file);
45 /* Output from the most significant digit to the least significant digit,
46 with each digit also output in decreasing significance order. */
47 for (s = ABS (xsize) - 1; s >= 0; s--)
52 for (i = BYTES_PER_MP_LIMB - 1; i >= 0; i--)
53 fputc ((x_digit >> (i * BITS_PER_CHAR)) % (1 << BITS_PER_CHAR), file);