为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

C#
慕莱坞森 2019-09-06 16:10:11
给定一个潜在的巨大整数值(采用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;


查看完整回答
反对 回复 2019-09-06
  • 3 回答
  • 0 关注
  • 1211 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信