int를 문자열로 변환 하시겠습니까?


499

C #에서 int데이터 형식을 데이터 형식으로 변환하려면 어떻게 string해야합니까?

답변:


741
string myString = myInt.ToString();

4
이것에 대한 나의 문제는 타입 안전을 잃는다는 것입니다. myInt는 무엇이든 될 수 있습니다. 여기에 아무것도 정수를 가져 와서 문자열로 변환한다고하지 않습니다. myInt는 객체 일 수 있으며 객체는 문자열로 변환 될 수 없습니다. 그것은 컴파일 타임에 알려져 있지만 런타임 예외를 일으키지 않고 단지 나쁜 데이터를 허용합니다.
— Timothy Gonzalez

3
@TimothyGonzalez .ToString ()을 호출하면 일반적으로 문자열이 필요하고 문자열 일 수 있기 때문에 가장자리 케이스입니다.
— EpicKip

35
@nfgallimore 유효한 경우가 아닙니다.이 상황에서도 가장자리가 아닙니다. OP는 그가 문자열로 변환하기를 원하는 int 유형을 가지고 있다고 말했습니다. 그것이 int 유형이라면, 평범하고 단순한 값은 int입니다. 컴파일러는 이것이 사실임을 보증합니다. 그 접선을 어떻게 시작했는지 확실하지 않습니다. OP는 무작위 참조가 정수인지 확인한 다음 문자열로 변환하는 방법을 묻지 않았습니다. 아마도 그 경우에는 당신이 요점을 가지고 있지만, 그렇지 않습니다.
— AaronM

1
이 솔루션은 null값에 대한 예외를 발생 시킵니다.
— Mehdi Dehghani

18
이 답변에 대한 의견은 말도 안됩니다.

524
string s = i.ToString();
string s = Convert.ToString(i);
string s = string.Format("{0}", i);
string s = $"{i}";
string s = "" + i;
string s = string.Empty + i;
string s = new StringBuilder().Append(i).ToString();

6
또한 당신은 이것을 할 수 있습니다string count = "" + intCount;
— Dion Dirza

2
이 모든 솔루션이 똑같이 효율적입니까? i.ToString ()이 int의 불필요한 권투를 수행한다고 생각하지만 어쨌든 최적화되었을 것입니다.
— Stephen Holt

43
.ToString()가장 효율적인 전환 방법입니다. 여기에 제시된 다른 모든 방법은 결국 .ToString()어쨌든 호출 됩니다.
— Xavier Poinas

6
변수를 계속 선언한다는 사실에 약간 불안한 느낌이 들었습니다.s
— thecoshman

1
@XavierPoinas "ToString ()"을 호출 할 수 있지만 가장 효율적인 방법은 무엇인지에 따라 다릅니다. string s = "xyz" + i;새로운 "xyz"문자열을 만듭니다-정수를 포함하는 새 문자열을 만듭니다. 연결된 2 개를 포함하는 3 번째 문자열을 만듭니다. string.Format("xyz{0}", i);반면에 인라인으로 연결하기 때문에 2 개의 문자열 만 생성 할 수 있습니다. 줄이 길어질수록이 성능이 더욱 두드러집니다.
— UKMonkey

32

이진 표현을 원하고 어젯밤 파티에서 여전히 취한 경우를 대비하여 :

private static string ByteToString(int value)
{
    StringBuilder builder = new StringBuilder(sizeof(byte) * 8);
    BitArray[] bitArrays = BitConverter.GetBytes(value).Reverse().Select(b => new BitArray(new []{b})).ToArray();
    foreach (bool bit in bitArrays.SelectMany(bitArray => bitArray.Cast<bool>().Reverse()))
    {
        builder.Append(bit ? '1' : '0');
    }
    return builder.ToString();
}

참고 : 엔디안을 아주 잘 다루지 않는 것에 대한 것 ...

편집 : 속도를 위해 약간의 메모리를 희생하지 않으려면 아래를 사용하여 미리 계산 된 문자열 값으로 배열을 생성 할 수 있습니다.

static void OutputIntegerStringRepresentations()
{
    Console.WriteLine("private static string[] integerAsDecimal = new [] {");
    for (int i = int.MinValue; i < int.MaxValue; i++)
    {
        Console.WriteLine("\t\"{0}\",", i);
    }
    Console.WriteLine("\t\"{0}\"", int.MaxValue);
    Console.WriteLine("}");
}


14

모든 객체의 ToString 메서드는 해당 객체의 문자열 표현을 반환해야합니다.

int var1 = 2;

string var2 = var1.ToString();

10

자비에르의 응답 @에에 또한, 여기에 속도 비교를 수행하는 페이지입니다 21,474,836 반복에 100 개 반복에서 변환을 수행하는 여러 가지 방법 사이는.

그것은 거의 다음과 같은 넥타이로 보입니다.

int someInt = 0;
someInt.ToString(); //this was fastest half the time
//and
Convert.ToString(someInt); //this was the fastest the other half the time

9
string str = intVar.ToString();

어떤 조건에서는 사용하지 않아도됩니다 ToString()

string str = "hi " + intVar;


4

답 중 어느 것도 ToString()메소드 가 정수 표현식에 적용될 수 있다고 언급하지 않았습니다.

Debug.Assert((1000*1000).ToString()=="1000000");

도에 정수 리터럴

Debug.Assert(256.ToString("X")=="100");

이와 같은 정수 리터럴은 종종 나쁜 코딩 스타일 ( 매직 숫자 )로 간주되지만 이 기능이 유용한 경우가 있습니다 ...


3
using System.ComponentModel;

TypeConverter converter = TypeDescriptor.GetConverter(typeof(int));
string s = (string)converter.ConvertTo(i, typeof(string));

이 답변은 코드를 설명하지 않았기 때문에 저품질 검토 대기열에 나타났습니다. (답변으로) 설명하면, 더 많은 투표를 할 가능성이 훨씬 높아지고 질문자는 실제로 무언가를 배웁니다!
— The Guy with The Hat

5
@TheGuywithTheHat 여기에 어떤 대답도 코드에 대한 설명이 없으며, 특히 고도로 고도화 된 답변의 모든 코드 샘플은 없습니다 .int 는 문자열로 변환해야합니다. 솔직히 우리는 받아 들여진 대답 외에는 아무것도 필요하지 않습니다 i.ToString.-나머지는 완전 함과 재미를 위해서만 여기 있습니다.
— nmclean

2
다른 답변에 설명이 없다고해서 모든 답변에 설명이 부족하다는 의미는 아닙니다. 내가이 특정 답변에 대해 언급 한 유일한 이유는 품질이 낮은 검토 대기열에서 보았 기 때문입니다.
— 모자

@TheGuywithTheHat 나는 다른 사람들이 있기 때문에 내 대답이 불완전 할 수 있다고 제안하지는 않았다. 나는이 질문의 맥락에서 의도가 분명하기 때문에 (이 것을 포함하여) 그들 중 어느 것도 없다고 말하고 있습니다.
— nmclean

2
@reggaeguitar 그것은 대부분 농담이며, 우리는 가장 기본적인 작업 중 하나를 수행하는 더 모호한 방법을 의도적으로 추가했습니다. 대신 - 당신이 미리 유형을 알고하지 않은 경우 그러나 귀하의 질문에,이 방법의 장점은 것입니다 typeof(int)그리고 typeof(string)당신이 유형의 변수를 가질 수 있고, 그것을 찾을 것 하나가 존재 때마다 적절한 컨버터를 사용합니다.
— nmclean

1
string s = "" + 2;

그리고 당신은 좋은 일을 할 수 있습니다 :

string s = 2 + 2 + "you" 

결과는 다음과 같습니다.

"4 당신"

당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.