如何将一个巨大的整数(字符串格式)转换为十六进制格式?(C#)

给定一个潜在的巨大整数值(采用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


到十六进制当量。


慕莱坞森
浏览 1213回答 3
3回答

斯蒂芬大帝

哦,这很简单:&nbsp; &nbsp; &nbsp; &nbsp; var s = "843370923007003347112437570992242323";&nbsp; &nbsp; &nbsp; &nbsp; var result = new List<byte>();&nbsp; &nbsp; &nbsp; &nbsp; result.Add( 0 );&nbsp; &nbsp; &nbsp; &nbsp; foreach ( char c in s )&nbsp; &nbsp; &nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; int val = (int)( c - '0' );&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; for ( int i = 0 ; i < result.Count ; i++ )&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; int digit = result[i] * 10 + val;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; result[i] = (byte)( digit & 0x0F );&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; val = digit >> 4;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if ( val != 0 )&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; result.Add( (byte)val );&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; var hex = "";&nbsp; &nbsp; &nbsp; &nbsp; foreach ( byte b in result )&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; hex = "0123456789ABCDEF"[ b ] + hex;
打开App,查看更多内容
随时随地看视频慕课网APP