给定一个潜在的巨大整数值(采用C#字符串格式),我希望能够生成其十六进制等效值。普通方法在这里不适用,因为我们正在谈论任意大数,50位或更多。我见过的技术使用了这样的技术:// Store integer 182int decValue = 182;// Convert integer 182 as a hex in a string variablestring hexValue = decValue.ToString("X");// Convert the hex string back to the numberint decAgain = int.Parse(hexValue, System.Globalization.NumberStyles.HexNumber);将无法工作,因为要转换的整数太大。例如,我需要能够像这样转换字符串:843370923007003347112437570992242323到十六进制当量。
3 回答
斯蒂芬大帝
TA贡献1827条经验 获得超8个赞
哦,这很简单:
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;
- 3 回答
- 0 关注
- 1269 浏览
添加回答
举报
0/150
提交
取消