> 백엔드 개발 > C++ > C#에서 임의의 큰 정수(문자열)를 16진수로 효율적으로 변환하는 방법은 무엇입니까?

C#에서 임의의 큰 정수(문자열)를 16진수로 효율적으로 변환하는 방법은 무엇입니까?

Barbara Streisand
풀어 주다: 2025-01-11 10:19:42
원래의
477명이 탐색했습니다.

How to Efficiently Convert Arbitrarily Large Integers (Strings) to Hexadecimal in C#?

C#에서 임의의 큰 정수를 16진수 형식으로 변환

질문:

기존 방법을 사용하여 큰 정수(문자열로 표시)를 16진수 형식으로 변환하면 그 크기가 엄청나게 크기 때문에 문제가 발생할 수 있습니다. 예를 들어 "843370923007003347112437570992242323"과 같은 문자열은 16진수로 변환할 수 없습니다.

해결책:

이 문제를 해결하려면 숫자를 직접 조작하는 기술을 사용하여 표준 변환 방법의 한계를 피할 수 있습니다.

<code class="language-csharp">        string s = "843370923007003347112437570992242323";
        List<byte> result = new List<byte>();
        result.Add(0);
        foreach (char c in s)
        {
            int val = (int)(c - '0');
            //此处代码有误,需要修正算法逻辑,以下为修正后的代码
            for (int i = result.Count - 1; i >= 0; i--)
            {
                result[i] = (byte)((result[i] * 10 + val) % 16);
                val = (result[i] * 10 + val) / 16;
                if (i == 0 && val != 0)
                {
                    result.Insert(0, (byte)val);
                }
            }
        }

        string hex = "";
        foreach (byte b in result)
            hex = "0123456789ABCDEF"[b] + hex;</code>
로그인 후 복사

이 메서드는 입력 문자열의 숫자를 반복하고, 곱셈과 숫자 추출 작업을 수행하고, hex 변수에 16진수 표현을 누적합니다. 참고: 원본 코드에는 논리 오류가 포함되어 있어 큰 정수의 16진수 변환을 올바르게 처리할 수 있도록 수정되었습니다. 수정된 코드는 보다 효율적인 알고리즘을 사용하고 원본 코드에 존재하는 오류를 방지합니다.

위 내용은 C#에서 임의의 큰 정수(문자열)를 16진수로 효율적으로 변환하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿