class_integer.html

来自「Crypto++是一个非常强大的密码学库,主要是功能全」· HTML 代码 · 共 793 行 · 第 1/4 页

HTML
793
字号
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"><title>Crypto++: Integer class Reference</title><link href="doxygen.css" rel="stylesheet" type="text/css"></head><body><!-- Generated by Doxygen 1.3.2 --><div class="qindex"><a class="qindex" href="index.html">Main&nbsp;Page</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class&nbsp;Hierarchy</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Compound&nbsp;List</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="namespacemembers.html">Namespace&nbsp;Members</a> | <a class="qindex" href="functions.html">Compound&nbsp;Members</a> | <a class="qindex" href="globals.html">File&nbsp;Members</a></div><h1>Integer Class Reference</h1><code>#include &lt;<a class="el" href="integer_8h-source.html">integer.h</a>&gt;</code><p><p>Inheritance diagram for Integer:<p><center><img src="class_integer.png" usemap="#Integer_map" border="0" alt=""></center><map name="Integer_map"><area href="class_a_s_n1_object.html" alt="ASN1Object" shape="rect" coords="0,0,82,24"></map><a href="class_integer-members.html">List of all members.</a><hr><a name="_details"></a><h2>Detailed Description</h2>multiple precision integer and basic arithmetics <p>This class can represent positive and negative integers with absolute value less than (256**sizeof(word)) ** (256**sizeof(int)).<p><p>Definition at line <a class="el" href="integer_8h-source.html#l00055">55</a> of file <a class="el" href="integer_8h-source.html">integer.h</a>.<table border=0 cellpadding=0 cellspacing=0><tr><td></td></tr><tr><td colspan=2><br><h2>ENUMS, EXCEPTIONS, and TYPEDEFS</h2></td></tr><tr><td class="memItemLeft" nowrap align=right valign=top>enum &nbsp;</td><td class="memItemRight" valign=bottom><b>Signedness</b> { <b>UNSIGNED</b>, <b>SIGNED</b> }</td></tr><tr><td class="memItemLeft" nowrap align=right valign=top>enum &nbsp;</td><td class="memItemRight" valign=bottom><b>RandomNumberType</b> { <b>ANY</b>, <b>PRIME</b> }</td></tr><tr><td colspan=2><br><h2>CREATORS</h2></td></tr><tr><td class="memItemLeft" nowrap align=right valign=top><a name="_integerz37_0" doxytag="Integer::Integer"></a>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="class_integer.html#_integerz37_0">Integer</a> ()</td></tr><tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">creates the zero integer <br><br></td></tr><tr><td class="memItemLeft" nowrap align=right valign=top><a name="_integerz37_1" doxytag="Integer::Integer"></a>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="class_integer.html#_integerz37_1">Integer</a> (const <a class="el" href="class_integer.html">Integer</a> &amp;t)</td></tr><tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">copy constructor <br><br></td></tr><tr><td class="memItemLeft" nowrap align=right valign=top><a name="_integerz37_2" doxytag="Integer::Integer"></a>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="class_integer.html#_integerz37_2">Integer</a> (signed long value)</td></tr><tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">convert from signed long <br><br></td></tr><tr><td class="memItemLeft" nowrap align=right valign=top>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="class_integer.html#_integerz37_3">Integer</a> (const char *str)</td></tr><tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">convert from string </em> <a href="#_integerz37_3"></a><em><br><br></td></tr><tr><td class="memItemLeft" nowrap align=right valign=top><a name="_integerz37_4" doxytag="Integer::Integer"></a>&nbsp;</td><td class="memItemRight" valign=bottom><b>Integer</b> (const wchar_t *str)</td></tr><tr><td class="memItemLeft" nowrap align=right valign=top><a name="_integerz37_5" doxytag="Integer::Integer"></a>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="class_integer.html#_integerz37_5">Integer</a> (const byte *encodedInteger, unsigned int byteCount, Signedness s=UNSIGNED)</td></tr><tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">convert from big-endian byte array <br><br></td></tr><tr><td class="memItemLeft" nowrap align=right valign=top><a name="_integerz37_6" doxytag="Integer::Integer"></a>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="class_integer.html#_integerz37_6">Integer</a> (<a class="el" href="class_buffered_transformation.html">BufferedTransformation</a> &amp;bt, unsigned int byteCount, Signedness s=UNSIGNED)</td></tr><tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">convert from big-endian form stored in a <a class="el" href="class_buffered_transformation.html">BufferedTransformation</a> <br><br></td></tr><tr><td class="memItemLeft" nowrap align=right valign=top><a name="_integerz37_7" doxytag="Integer::Integer"></a>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="class_integer.html#_integerz37_7">Integer</a> (<a class="el" href="class_buffered_transformation.html">BufferedTransformation</a> &amp;bt)</td></tr><tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">convert from BER encoded byte array stored in a <a class="el" href="class_buffered_transformation.html">BufferedTransformation</a> object <br><br></td></tr><tr><td class="memItemLeft" nowrap align=right valign=top>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="class_integer.html#_integerz37_8">Integer</a> (<a class="el" href="class_random_number_generator.html">RandomNumberGenerator</a> &amp;rng, unsigned int bitcount)</td></tr><tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">create a random integer </em> <a href="#_integerz37_8"></a><em><br><br></td></tr><tr><td class="memItemLeft" nowrap align=right valign=top>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="class_integer.html#_integerz37_9">Integer</a> (<a class="el" href="class_random_number_generator.html">RandomNumberGenerator</a> &amp;rng, const <a class="el" href="class_integer.html">Integer</a> &amp;min, const <a class="el" href="class_integer.html">Integer</a> &amp;max, RandomNumberType rnType=ANY, const <a class="el" href="class_integer.html">Integer</a> &amp;equiv=Zero(), const <a class="el" href="class_integer.html">Integer</a> &amp;mod=One())</td></tr><tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">create a random integer of special type </em> <a href="#_integerz37_9"></a><em><br><br></td></tr><tr><td class="memItemLeft" nowrap align=right valign=top><a name="_integerz37_10" doxytag="Integer::Zero"></a>const <a class="el" href="class_integer.html">Integer</a> &amp;&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="class_integer.html#_integerz37_10">Zero</a> ()</td></tr><tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">avoid calling constructors for these frequently used integers <br><br></td></tr><tr><td class="memItemLeft" nowrap align=right valign=top><a name="_integerz37_11" doxytag="Integer::One"></a>const <a class="el" href="class_integer.html">Integer</a> &amp;&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="class_integer.html#_integerz37_11">One</a> ()</td></tr><tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">avoid calling constructors for these frequently used integers <br><br></td></tr><tr><td class="memItemLeft" nowrap align=right valign=top><a name="_integerz37_12" doxytag="Integer::Two"></a>const <a class="el" href="class_integer.html">Integer</a> &amp;&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="class_integer.html#_integerz37_12">Two</a> ()</td></tr><tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">avoid calling constructors for these frequently used integers <br><br></td></tr><tr><td class="memItemLeft" nowrap align=right valign=top><a name="_integerz37_13" doxytag="Integer::Power2"></a><a class="el" href="class_integer.html">Integer</a>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="class_integer.html#_integerz37_13">Power2</a> (unsigned int e)</td></tr><tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">return the integer 2**e <br><br></td></tr><tr><td colspan=2><br><h2>ENCODE/DECODE</h2></td></tr><tr><td class="memItemLeft" nowrap align=right valign=top>unsigned int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="class_integer.html#_integerz39_0">MinEncodedSize</a> (Signedness=UNSIGNED) const</td></tr><tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">minimum number of bytes to encode this integer </em> <a href="#_integerz39_0"></a><em><br><br></td></tr><tr><td class="memItemLeft" nowrap align=right valign=top>unsigned int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="class_integer.html#_integerz39_1">Encode</a> (byte *output, unsigned int outputLen, Signedness=UNSIGNED) const</td></tr><tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">encode in big-endian format </em> <a href="#_integerz39_1"></a><em><br><br></td></tr><tr><td class="memItemLeft" nowrap align=right valign=top><a name="_integerz39_2" doxytag="Integer::Encode"></a>unsigned int&nbsp;</td><td class="memItemRight" valign=bottom><b>Encode</b> (<a class="el" href="class_buffered_transformation.html">BufferedTransformation</a> &amp;bt, unsigned int outputLen, Signedness=UNSIGNED) const</td></tr><tr><td class="memItemLeft" nowrap align=right valign=top><a name="_integerz39_3" doxytag="Integer::DEREncode"></a>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="class_integer.html#_integerz39_3">DEREncode</a> (<a class="el" href="class_buffered_transformation.html">BufferedTransformation</a> &amp;bt) const</td></tr><tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">encode using Distinguished Encoding Rules, put result into a <a class="el" href="class_buffered_transformation.html">BufferedTransformation</a> object <br><br></td></tr><tr><td class="memItemLeft" nowrap align=right valign=top><a name="_integerz39_4" doxytag="Integer::DEREncodeAsOctetString"></a>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="class_integer.html#_integerz39_4">DEREncodeAsOctetString</a> (<a class="el" href="class_buffered_transformation.html">BufferedTransformation</a> &amp;bt, unsigned int length) const</td></tr><tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">encode absolute value as big-endian octet string <br><br></td></tr><tr><td class="memItemLeft" nowrap align=right valign=top><a name="_integerz39_5" doxytag="Integer::OpenPGPEncode"></a>unsigned int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="class_integer.html#_integerz39_5">OpenPGPEncode</a> (byte *output, unsigned int bufferSize) const</td></tr><tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">encode absolute value in OpenPGP format, return length of output <br><br></td></tr><tr><td class="memItemLeft" nowrap align=right valign=top><a name="_integerz39_6" doxytag="Integer::OpenPGPEncode"></a>unsigned int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="class_integer.html#_integerz39_6">OpenPGPEncode</a> (<a class="el" href="class_buffered_transformation.html">BufferedTransformation</a> &amp;bt) const</td></tr><tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">encode absolute value in OpenPGP format, put result into a <a class="el" href="class_buffered_transformation.html">BufferedTransformation</a> object <br><br></td></tr><tr><td class="memItemLeft" nowrap align=right valign=top><a name="_integerz39_7" doxytag="Integer::Decode"></a>void&nbsp;</td><td class="memItemRight" valign=bottom><b>Decode</b> (const byte *input, unsigned int inputLen, Signedness=UNSIGNED)</td></tr><tr><td class="memItemLeft" nowrap align=right valign=top><a name="_integerz39_8" doxytag="Integer::Decode"></a>void&nbsp;</td><td class="memItemRight" valign=bottom><b>Decode</b> (<a class="el" href="class_buffered_transformation.html">BufferedTransformation</a> &amp;bt, unsigned int inputLen, Signedness=UNSIGNED)</td></tr><tr><td class="memItemLeft" nowrap align=right valign=top><a name="_integerz39_9" doxytag="Integer::BERDecode"></a>void&nbsp;</td><td class="memItemRight" valign=bottom><b>BERDecode</b> (const byte *input, unsigned int inputLen)</td></tr><tr><td class="memItemLeft" nowrap align=right valign=top><a name="_integerz39_10" doxytag="Integer::BERDecode"></a>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="class_integer.html#_integerz39_10">BERDecode</a> (<a class="el" href="class_buffered_transformation.html">BufferedTransformation</a> &amp;bt)</td></tr><tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">decode this object from a <a class="el" href="class_buffered_transformation.html">BufferedTransformation</a>, using BER (Basic Encoding Rules) <br><br></td></tr><tr><td class="memItemLeft" nowrap align=right valign=top><a name="_integerz39_11" doxytag="Integer::BERDecodeAsOctetString"></a>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="class_integer.html#_integerz39_11">BERDecodeAsOctetString</a> (<a class="el" href="class_buffered_transformation.html">BufferedTransformation</a> &amp;bt, unsigned int length)</td></tr><tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">decode nonnegative value as big-endian octet string <br><br></td></tr><tr><td class="memItemLeft" nowrap align=right valign=top><a name="_integerz39_12" doxytag="Integer::OpenPGPDecode"></a>void&nbsp;</td><td class="memItemRight" valign=bottom><b>OpenPGPDecode</b> (const byte *input, unsigned int inputLen)</td></tr><tr><td class="memItemLeft" nowrap align=right valign=top><a name="_integerz39_13" doxytag="Integer::OpenPGPDecode"></a>void&nbsp;</td><td class="memItemRight" valign=bottom><b>OpenPGPDecode</b> (<a class="el" href="class_buffered_transformation.html">BufferedTransformation</a> &amp;bt)</td></tr><tr><td colspan=2><br><h2>ACCESSORS</h2></td></tr><tr><td class="memItemLeft" nowrap align=right valign=top><a name="_integerz41_0" doxytag="Integer::IsConvertableToLong"></a>bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="class_integer.html#_integerz41_0">IsConvertableToLong</a> () const</td></tr><tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">return true if *this can be represented as a signed long <br><br></td></tr><tr><td class="memItemLeft" nowrap align=right valign=top><a name="_integerz41_1" doxytag="Integer::ConvertToLong"></a>signed long&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="class_integer.html#_integerz41_1">ConvertToLong</a> () const</td></tr><tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">return equivalent signed long if possible, otherwise undefined <br><br></td></tr><tr><td class="memItemLeft" nowrap align=right valign=top><a name="_integerz41_2" doxytag="Integer::BitCount"></a>unsigned int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="class_integer.html#_integerz41_2">BitCount</a> () const</td></tr><tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">number of significant bits = floor(log2(abs(*this))) + 1 <br><br></td></tr><tr><td class="memItemLeft" nowrap align=right valign=top><a name="_integerz41_3" doxytag="Integer::ByteCount"></a>unsigned int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="class_integer.html#_integerz41_3">ByteCount</a> () const</td></tr><tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">number of significant bytes = ceiling(<a class="el" href="class_integer.html#_integerz41_2">BitCount()</a>/8) <br><br></td></tr><tr><td class="memItemLeft" nowrap align=right valign=top><a name="_integerz41_4" doxytag="Integer::WordCount"></a>unsigned int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="class_integer.html#_integerz41_4">WordCount</a> () const</td></tr><tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">number of significant words = ceiling(<a class="el" href="class_integer.html#_integerz41_3">ByteCount()</a>/sizeof(word)) <br><br></td></tr><tr><td class="memItemLeft" nowrap align=right valign=top><a name="_integerz41_5" doxytag="Integer::GetBit"></a>bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="class_integer.html#_integerz41_5">GetBit</a> (unsigned int i) const</td></tr><tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">return the i-th bit, i=0 being the least significant bit <br><br></td></tr><tr><td class="memItemLeft" nowrap align=right valign=top><a name="_integerz41_6" doxytag="Integer::GetByte"></a>byte&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="class_integer.html#_integerz41_6">GetByte</a> (unsigned int i) const</td></tr><tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">return the i-th byte <br><br></td></tr><tr><td class="memItemLeft" nowrap align=right valign=top><a name="_integerz41_7" doxytag="Integer::GetBits"></a>unsigned long&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="class_integer.html#_integerz41_7">GetBits</a> (unsigned int i, unsigned int n) const</td></tr><tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">return n lowest bits of *this &gt;&gt; i <br><br></td></tr><tr><td class="memItemLeft" nowrap align=right valign=top><a name="_integerz41_8" doxytag="Integer::IsZero"></a>bool&nbsp;</td><td class="memItemRight" valign=bottom><b>IsZero</b> () const</td></tr><tr><td class="memItemLeft" nowrap align=right valign=top><a name="_integerz41_9" doxytag="Integer::NotZero"></a>bool&nbsp;</td><td class="memItemRight" valign=bottom><b>NotZero</b> () const</td></tr><tr><td class="memItemLeft" nowrap align=right valign=top><a name="_integerz41_10" doxytag="Integer::IsNegative"></a>bool&nbsp;</td><td class="memItemRight" valign=bottom><b>IsNegative</b> () const</td></tr><tr><td class="memItemLeft" nowrap align=right valign=top><a name="_integerz41_11" doxytag="Integer::NotNegative"></a>bool&nbsp;</td><td class="memItemRight" valign=bottom><b>NotNegative</b> () const</td></tr><tr><td class="memItemLeft" nowrap align=right valign=top><a name="_integerz41_12" doxytag="Integer::IsPositive"></a>bool&nbsp;</td><td class="memItemRight" valign=bottom><b>IsPositive</b> () const</td></tr><tr><td class="memItemLeft" nowrap align=right valign=top><a name="_integerz41_13" doxytag="Integer::NotPositive"></a>bool&nbsp;</td><td class="memItemRight" valign=bottom><b>NotPositive</b> () const</td></tr><tr><td class="memItemLeft" nowrap align=right valign=top><a name="_integerz41_14" doxytag="Integer::IsEven"></a>bool&nbsp;</td><td class="memItemRight" valign=bottom><b>IsEven</b> () const</td></tr><tr><td class="memItemLeft" nowrap align=right valign=top><a name="_integerz41_15" doxytag="Integer::IsOdd"></a>bool&nbsp;</td><td class="memItemRight" valign=bottom><b>IsOdd</b> () const</td></tr><tr><td colspan=2><br><h2>MANIPULATORS</h2></td></tr><tr><td class="memItemLeft" nowrap align=right valign=top><a name="_integerz43_0" doxytag="Integer::operator="></a><a class="el" href="class_integer.html">Integer</a> &amp;&nbsp;</td><td class="memItemRight" valign=bottom><b>operator=</b> (const <a class="el" href="class_integer.html">Integer</a> &amp;t)</td></tr><tr><td class="memItemLeft" nowrap align=right valign=top><a name="_integerz43_1" doxytag="Integer::operator+="></a><a class="el" href="class_integer.html">Integer</a> &amp;&nbsp;</td><td class="memItemRight" valign=bottom><b>operator+=</b> (const <a class="el" href="class_integer.html">Integer</a> &amp;t)</td></tr><tr><td class="memItemLeft" nowrap align=right valign=top><a name="_integerz43_2" doxytag="Integer::operator-="></a>

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?