반응형
int를 바이너리로 변환하는 쉽고 빠른 방법?
내가 찾고있는 것은 decbin
C #의 PHP 함수 와 같은 것 입니다. 이 함수는 십진수를 문자열로 표현으로 변환합니다.
예를 들어 사용 decbin(21)
하면 10101
결과로 반환 됩니다.
기본적으로 내가 원하는 것을 수행 하는 이 기능 을 찾았 지만 더 나은 / 빠른 방법이있을 수 있습니까?
var result = Convert.ToString(number, 2);
– (그렇지 않으면 쓸모없는) Convert
클래스에 대한 거의 유일한 용도 .
대부분의 방법은 찾은 기능보다 더 좋고 빠릅니다. 변환을 수행하는 방법에 대한 좋은 예가 아닙니다.
기본 제공 방법 Convert.ToString(num, base)
은 당연한 선택이지만 다른 방식으로 작동해야하는 경우 대체를 쉽게 작성할 수 있습니다.
이진수의 길이를 지정할 수있는 간단한 방법입니다.
public static string ToBin(int value, int len) {
return (len > 1 ? ToBin(value >> 1, len - 1) : null) + "01"[value & 1];
}
재귀를 사용하고, 첫 번째 부분 (+ 앞)은 마지막 숫자를 제외한 숫자의 이진 표현을 만들기 위해 자신을 호출하고 두 번째 부분은 마지막 숫자를 처리합니다.
예:
Console.WriteLine(ToBin(42, 8));
산출:
00101010
int toBase = 2;
string binary = Convert.ToString(21, toBase); // "10101"
0으로 채워진 지정된 자릿수 (적어도)에 이진 값을 포함하려면 :
string bin = Convert.ToString(1234, 2).PadLeft(16, '0');
Convert.ToString은 이진 문자열로 변환합니다.
PadLeft는 0을 추가하여 최대 16 자리를 채 웁니다.
이것은 내 대답입니다.
static bool[] Dec2Bin(int value)
{
if (value == 0) return new[] { false };
var n = (int)(Math.Log(value) / Math.Log(2));
var a = new bool[n + 1];
for (var i = n; i >= 0; i--)
{
n = (int)Math.Pow(2, i);
if (n > value) continue;
a[i] = true;
value -= n;
}
Array.Reverse(a);
return a;
}
모듈로 대신 Pow를 사용하고 나누기 때문에 더 빠른 방법이라고 생각합니다.
참고 URL : https://stackoverflow.com/questions/1838963/easy-and-fast-way-to-convert-an-int-to-binary
반응형
'program story' 카테고리의 다른 글
0은 C에서 8 진수 또는 10 진수입니까? (0) | 2020.11.29 |
---|---|
크롤러를 작성하는 방법? (0) | 2020.11.29 |
신속한 데이터를 16 진수 문자열로 변환하는 방법 (0) | 2020.11.29 |
파일에서 생성 될 때 Kubernetes에서 비밀을 업데이트하려면 어떻게해야합니까? (0) | 2020.11.29 |
React Native에서 x-www-form-urlencoded 요청 게시 (0) | 2020.11.29 |