Struct num_bigint::BigInt
[−]
[src]
pub struct BigInt { // some fields omitted }
A big signed integer type.
Methods
impl BigInt
fn new(sign: Sign, digits: Vec<BigDigit>) -> BigInt
Creates and initializes a BigInt.
The digits are in little-endian base 232.
fn from_biguint(sign: Sign, data: BigUint) -> BigInt
Creates and initializes a BigInt
.
The digits are in little-endian base 232.
fn from_slice(sign: Sign, slice: &[BigDigit]) -> BigInt
Creates and initializes a BigInt
.
fn from_bytes_be(sign: Sign, bytes: &[u8]) -> BigInt
Creates and initializes a BigInt
.
The bytes are in big-endian byte order.
Examples
use num_bigint::{BigInt, Sign}; assert_eq!(BigInt::from_bytes_be(Sign::Plus, b"A"), BigInt::parse_bytes(b"65", 10).unwrap()); assert_eq!(BigInt::from_bytes_be(Sign::Plus, b"AA"), BigInt::parse_bytes(b"16705", 10).unwrap()); assert_eq!(BigInt::from_bytes_be(Sign::Plus, b"AB"), BigInt::parse_bytes(b"16706", 10).unwrap()); assert_eq!(BigInt::from_bytes_be(Sign::Plus, b"Hello world!"), BigInt::parse_bytes(b"22405534230753963835153736737", 10).unwrap());
fn from_bytes_le(sign: Sign, bytes: &[u8]) -> BigInt
Creates and initializes a BigInt
.
The bytes are in little-endian byte order.
fn to_bytes_le(&self) -> (Sign, Vec<u8>)
Returns the sign and the byte representation of the BigInt
in little-endian byte order.
Examples
use num_bigint::{ToBigInt, Sign}; let i = -1125.to_bigint().unwrap(); assert_eq!(i.to_bytes_le(), (Sign::Minus, vec![101, 4]));
fn to_bytes_be(&self) -> (Sign, Vec<u8>)
Returns the sign and the byte representation of the BigInt
in big-endian byte order.
Examples
use num_bigint::{ToBigInt, Sign}; let i = -1125.to_bigint().unwrap(); assert_eq!(i.to_bytes_be(), (Sign::Minus, vec![4, 101]));
fn to_str_radix(&self, radix: u32) -> String
Returns the integer formatted as a string in the given radix.
radix
must be in the range [2, 36]
.
Examples
use num_bigint::BigInt; let i = BigInt::parse_bytes(b"ff", 16).unwrap(); assert_eq!(i.to_str_radix(16), "ff");
fn sign(&self) -> Sign
Returns the sign of the BigInt
as a Sign
.
Examples
use num_bigint::{ToBigInt, Sign}; assert_eq!(ToBigInt::to_bigint(&1234).unwrap().sign(), Sign::Plus); assert_eq!(ToBigInt::to_bigint(&-4321).unwrap().sign(), Sign::Minus); assert_eq!(ToBigInt::to_bigint(&0).unwrap().sign(), Sign::NoSign);
fn parse_bytes(buf: &[u8], radix: u32) -> Option<BigInt>
Creates and initializes a BigInt
.
Examples
use num_bigint::{BigInt, ToBigInt}; assert_eq!(BigInt::parse_bytes(b"1234", 10), ToBigInt::to_bigint(&1234)); assert_eq!(BigInt::parse_bytes(b"ABCD", 16), ToBigInt::to_bigint(&0xABCD)); assert_eq!(BigInt::parse_bytes(b"G", 16), None);
fn bits(&self) -> usize
Determines the fewest bits necessary to express the BigInt
,
not including the sign.
fn to_biguint(&self) -> Option<BigUint>
Converts this BigInt
into a BigUint
, if it's not negative.
fn checked_add(&self, v: &BigInt) -> Option<BigInt>
fn checked_sub(&self, v: &BigInt) -> Option<BigInt>
fn checked_mul(&self, v: &BigInt) -> Option<BigInt>
fn checked_div(&self, v: &BigInt) -> Option<BigInt>
Trait Implementations
impl ToBigUint for BigInt
fn to_biguint(&self) -> Option<BigUint>
impl PartialEq for BigInt
impl Eq for BigInt
impl PartialOrd for BigInt
fn partial_cmp(&self, other: &BigInt) -> Option<Ordering>
1.0.0fn lt(&self, other: &Rhs) -> bool
1.0.0fn le(&self, other: &Rhs) -> bool
1.0.0fn gt(&self, other: &Rhs) -> bool
1.0.0fn ge(&self, other: &Rhs) -> bool
impl Ord for BigInt
impl Default for BigInt
impl Display for BigInt
impl Binary for BigInt
impl Octal for BigInt
impl LowerHex for BigInt
impl UpperHex for BigInt
impl FromStr for BigInt
type Err = ParseBigIntError
fn from_str(s: &str) -> Result<BigInt, ParseBigIntError>
impl Num for BigInt
type FromStrRadixErr = ParseBigIntError
fn from_str_radix(s: &str, radix: u32) -> Result<BigInt, ParseBigIntError>
Creates and initializes a BigInt.
impl Shl<usize> for BigInt
impl<'a> Shl<usize> for &'a BigInt
impl Shr<usize> for BigInt
impl<'a> Shr<usize> for &'a BigInt
impl Zero for BigInt
impl One for BigInt
impl Signed for BigInt
fn abs(&self) -> BigInt
fn abs_sub(&self, other: &BigInt) -> BigInt
fn signum(&self) -> BigInt
fn is_positive(&self) -> bool
fn is_negative(&self) -> bool
impl<'a, 'b> Add<&'b BigInt> for &'a BigInt
impl<'a> Add<BigInt> for &'a BigInt
impl<'a> Add<&'a BigInt> for BigInt
impl Add<BigInt> for BigInt
impl<'a, 'b> Sub<&'b BigInt> for &'a BigInt
impl<'a> Sub<BigInt> for &'a BigInt
impl<'a> Sub<&'a BigInt> for BigInt
impl Sub<BigInt> for BigInt
impl Mul<BigInt> for BigInt
impl<'a> Mul<&'a BigInt> for BigInt
impl<'a> Mul<BigInt> for &'a BigInt
impl<'a, 'b> Mul<&'b BigInt> for &'a BigInt
impl Div<BigInt> for BigInt
impl<'a> Div<&'a BigInt> for BigInt
impl<'a> Div<BigInt> for &'a BigInt
impl<'a, 'b> Div<&'b BigInt> for &'a BigInt
impl Rem<BigInt> for BigInt
impl<'a> Rem<&'a BigInt> for BigInt
impl<'a> Rem<BigInt> for &'a BigInt
impl<'a, 'b> Rem<&'b BigInt> for &'a BigInt
impl Neg for BigInt
impl<'a> Neg for &'a BigInt
impl CheckedAdd for BigInt
fn checked_add(&self, v: &BigInt) -> Option<BigInt>
impl CheckedSub for BigInt
fn checked_sub(&self, v: &BigInt) -> Option<BigInt>
impl CheckedMul for BigInt
fn checked_mul(&self, v: &BigInt) -> Option<BigInt>
impl CheckedDiv for BigInt
fn checked_div(&self, v: &BigInt) -> Option<BigInt>
impl Integer for BigInt
fn div_rem(&self, other: &BigInt) -> (BigInt, BigInt)
fn div_floor(&self, other: &BigInt) -> BigInt
fn mod_floor(&self, other: &BigInt) -> BigInt
fn div_mod_floor(&self, other: &BigInt) -> (BigInt, BigInt)
fn gcd(&self, other: &BigInt) -> BigInt
Calculates the Greatest Common Divisor (GCD) of the number and other
.
The result is always positive.
fn lcm(&self, other: &BigInt) -> BigInt
Calculates the Lowest Common Multiple (LCM) of the number and other
.
fn divides(&self, other: &BigInt) -> bool
Deprecated, use is_multiple_of
instead.
fn is_multiple_of(&self, other: &BigInt) -> bool
Returns true
if the number is a multiple of other
.
fn is_even(&self) -> bool
Returns true
if the number is divisible by 2
.
fn is_odd(&self) -> bool
Returns true
if the number is not divisible by 2
.