Konversi int ke string?

499

Bagaimana saya bisa mengubah inttipe data menjadi stringtipe data dalam C #?

Teduh terburuk
sumber

Jawaban:

741
string myString = myInt.ToString();
Anthony Pegram
sumber
4
Masalah saya dengan ini adalah Anda kehilangan keamanan jenis. myInt bisa berupa apa saja. Tidak ada yang mengatakan ambil integer dan mengubahnya menjadi string. myInt dapat berupa objek dan objek tidak dapat dikonversi ke string. Itu diketahui pada waktu kompilasi, tetapi bahkan tidak akan meningkatkan pengecualian runtime, itu hanya akan memungkinkan data yang buruk.
Timothy Gonzalez
3
@TimothyGonzalez Itu kasus tepi, jika Anda memanggil .ToString () biasanya karena Anda membutuhkannya menjadi string dan itu bisa menjadi string.
EpicKip
35
@ nfgallimore Ini bukan kasus tepi yang valid bahkan bukan kasus tepi dalam situasi ini. OP menyatakan ia memiliki tipe int yang ingin dikonversi menjadi string. Jika ini adalah tipe int, maka nilainya polos dan sederhana. Compiler akan memastikan hal itu terjadi. Bahkan tidak yakin bagaimana Anda menggunakan garis singgung itu. OP tidak bertanya bagaimana memastikan referensi acak adalah bilangan bulat dan kemudian mengubahnya menjadi string. Mungkin dalam hal ini Anda ada benarnya, tetapi bukan itu masalahnya.
AaronM
1
Solusi ini membuang pengecualian untuk nullnilai.
Mehdi Dehghani
18
Komentar tentang jawaban ini konyol.
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();
Xavier Poinas
sumber
6
Anda juga dapat melakukan inistring count = "" + intCount;
Dion Dirza
2
Apakah semua solusi ini sama efisiennya? Saya membayangkan i.ToString () melakukan beberapa tinju int yang tidak perlu, tapi mungkin itu yang dioptimalkan.
Stephen Holt
43
.ToString()adalah cara paling efisien untuk melakukan konversi. Semua metode lain yang disajikan di sini pada akhirnya akan .ToString()tetap menelepon .
Xavier Poinas
6
Saya merasa sedikit tidak tenang dengan fakta bahwa Anda terus mendeklarasikan ulang variabels
thecoshman
1
@XavierPoinas Meskipun mereka dapat memanggil "ToString ()" - itu agak tergantung pada apa yang Anda rencanakan dengan yang paling efisien. string s = "xyz" + i;akan membuat string "xyz" baru - membuat string baru yang berisi bilangan bulat Anda; dan kemudian membuat string ke-3 yang berisi 2 concated. string.Format("xyz{0}", i);di sisi lain, hanya dapat menghasilkan 2 string - karena itu merangkai mereka inline. Performa ini menjadi lebih nyata karena senarnya semakin panjang.
UKMonkey
32

Jika Anda menginginkan representasi biner dan Anda masih mabuk dari pesta semalam:

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();
}

Catatan: Sesuatu tentang tidak menangani endianness dengan sangat baik ...

Sunting: Jika Anda tidak keberatan mengorbankan sedikit memori untuk kecepatan, Anda dapat menggunakan di bawah ini untuk menghasilkan array dengan nilai string yang sudah dihitung:

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("}");
}
Onots
sumber
25
int num = 10;
string str = Convert.ToString(num);
Polaris
sumber
14

Metode ToString dari objek apa pun seharusnya mengembalikan representasi string dari objek itu.

int var1 = 2;

string var2 = var1.ToString();
VoodooChild
sumber
10

Lebih jauh ke tanggapan @ Xavier, inilah halaman yang melakukan perbandingan kecepatan antara beberapa cara berbeda untuk melakukan konversi dari 100 iterasi hingga 21.474.836 iterasi.

Tampaknya cukup banyak ikatan antara:

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

sumber
9
string str = intVar.ToString();

Dalam beberapa kondisi, Anda tidak harus menggunakan ToString()

string str = "hi " + intVar;
Mehmet Ince
sumber
8

atau:

string s = Convert.ToString(num);
Jesse C. Slicer
sumber
4

Tidak ada jawaban yang menyebutkan bahwa ToString()metode ini dapat diterapkan ke ekspresi integer

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

bahkan ke integer literal

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

Meskipun bilangan bulat integer seperti ini sering dianggap sebagai gaya pengkodean yang buruk ( angka ajaib ) mungkin ada kasus di mana fitur ini berguna ...

Serigala
sumber
3
using System.ComponentModel;

TypeConverter converter = TypeDescriptor.GetConverter(typeof(int));
string s = (string)converter.ConvertTo(i, typeof(string));
nmclean
sumber
Jawaban ini muncul dalam antrian ulasan berkualitas rendah, mungkin karena Anda tidak menjelaskan kode. Jika Anda benar-benar menjelaskannya (dalam jawaban Anda), Anda akan jauh lebih mungkin mendapatkan lebih banyak suara — dan si penanya benar-benar mempelajari sesuatu!
The Guy with The Hat
5
@TheGuywithTheHat Anda akan melihat bahwa tidak ada jawaban di sini yang memiliki penjelasan tentang kode, terutama semua sampel kode dalam jawaban yang sangat tervotifikasi ini , karena jelas apa yang harus mereka lakukan: mengonversi int ke string. Sejujurnya kita tidak membutuhkan apa pun di luar jawaban yang diterima - i.ToString- sisanya hanya ada di sini demi kelengkapan dan kesenangan.
nmclean
2
Kurangnya penjelasan dalam jawaban lain tidak berarti bahwa semua jawaban harus kurang penjelasan. Satu-satunya alasan saya mengomentari jawaban khusus ini adalah karena saya melihatnya di antrian ulasan berkualitas rendah.
The Guy with The Hat
@TheGuywithTheHat Saya tidak menyarankan bahwa jawaban saya bisa tidak lengkap karena yang lain; Saya mengatakan tidak satupun dari mereka (termasuk yang ini) karena niatnya jelas dalam konteks pertanyaan ini.
nmclean
2
@reggaeguitar Ini sebagian besar jawaban lelucon, kami sengaja menambahkan semakin banyak cara yang tidak jelas dalam melakukan salah satu tugas paling dasar. Tetapi untuk pertanyaan Anda, keuntungan dari metode ini adalah jika Anda tidak mengetahui tipe-tipe sebelumnya - daripada typeof(int)dan typeof(string)Anda bisa memiliki variabel Type dan itu akan menemukan dan menggunakan konverter yang sesuai setiap kali ada.
nmclean
1
string s = "" + 2;

dan Anda dapat melakukan hal-hal baik seperti:

string s = 2 + 2 + "you" 

Hasilnya adalah:

"4 kamu"

Gilad F
sumber