给定一个可能很大的整数值( C#字符串格式),我希望能够生成它的十六进制等效值。通常的方法不适用于这里,因为我们讨论的是任意大的数字,50位或更多。我所见过的技术使用了这样的技术:
// Store integer 182
int decValue = 182;
// Convert integer 182 as a hex in a string variable
string hexValue = decValue.ToString("X");
// Convert the hex string back to the number
int decAgain = int.Parse(hexValue, System.Globalization.NumberStyles.HexNumber);将不起作用,因为要转换的整数太大。
例如,我需要能够像这样转换字符串:
843370923007003347112437570992242323
转换为它的十六进制等效值。
这些不起作用:
C# convert integer to hex and back again How to convert numbers between hexadecimal and decimal in C#?
发布于 2010-04-16 20:48:14
哦,这很简单:
var s = "843370923007003347112437570992242323";
var result = new List<byte>();
result.Add( 0 );
foreach ( char c in s )
{
int val = (int)( c - '0' );
for ( int i = 0 ; i < result.Count ; i++ )
{
int digit = result[i] * 10 + val;
result[i] = (byte)( digit & 0x0F );
val = digit >> 4;
}
if ( val != 0 )
result.Add( (byte)val );
}
var hex = "";
foreach ( byte b in result )
hex = "0123456789ABCDEF"[ b ] + hex;发布于 2010-04-16 20:16:42
使用BigInteger存储整数,然后对该对象使用.ToString("X")。
示例:
var number = BigInteger.Parse("843370923007003347112437570992242323");
string hexValue = number.ToString("X");但是,这仅限于.NET 4和更高版本。但Jens A.指出了一个BigInteger class on codeproject,它的类包含一个名为ToHexString的方法,因此它可以在< .NET 4场景中工作。
发布于 2010-04-16 20:33:35
正如Jens所说,看看Code Project上的BigInt实现。即使他们没有转换成十六进制的函数,只要这个BigInt有一个除法和模运算(我不认为它有一个模数函数,所以你也需要自己写modulo ),你也可以很容易地用write a function自己来做。
https://stackoverflow.com/questions/2652760
复制相似问题