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 중국어 웹사이트의 기타 관련 기사를 참조하세요!