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.