SORU
23 Ocak 2009, Cuma


Bir kodlama kullanmadan bayt dizisi için bir dize (bayt bayt)dönüştürme

Nasıl byte[] string Bir dönüştür .(C#) NET?

Ayrıca, neden kodlama dikkate alınmalıdır? Ben sadece dize saklı ne alabilir mi? Neden karakter kodlamaları bir bağımlılık var mı?

CEVAP
30 NİSAN 2012, PAZARTESİ


Cevaplar burada aksine, kodlama hakkında endişelenmenize gerek YOKeğerbayt yorumlanır gerek yok!

Bahsettiğiniz gibi, Eğer amaç, basitçe,< . em ^dize depolanan ne oldu"".
(Ve, tabii ki, bayt yeniden inşa dize edebilmek için.)

Bu amaçlar için, gerçektendeğilkodlamalar gereken insanlar diyorum neden anlamak. Kesinlikle bu kodlamalar hakkında endişelenmenize gerek yoktur.

Bunu yerine:

static byte[] GetBytes(string str)
{
    byte[] bytes = new byte[str.Length * sizeof(char)];
    System.Buffer.BlockCopy(str.ToCharArray(), 0, bytes, 0, bytes.Length);
    return bytes;
}

static string GetString(byte[] bytes)
{
    char[] chars = new char[bytes.Length / sizeof(char)];
    System.Buffer.BlockCopy(bytes, 0, chars, 0, bytes.Length);
    return new string(chars);
}

Programınızı sürece (veya diğer programlar) için çalışmayınyorumlarbelli ki niyetiniz söz etmedi bayt bir şekilde, o zaman varhiçbir şeybu yanlış bir yaklaşım! Kodlamalar endişesi hayatını gerçek bir sebep için daha da karmaşık hale getirir.

Bu yaklaşıma ek avantaj:

Eğer dize hala veri almak ve özgün dize yine de yeniden inşa edebilirsiniz, çünkü geçersiz bir karakter içeriyorsa, bir önemi yok!

Kodlanmış ve çünkü sadece aynı çözümlenmiş olacakbayt bakıyordu.

Eğer belirli bir kodlama kullandıysanız, olsa, kodlama/kod çözme geçersiz karakterler ile sorun verirdi.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Digital Bounds

    Digital Boun

    19 Temmuz 2013
  • Dylan Brenan

    Dylan Brenan

    22 Aralık 2009
  • Friday NightFort

    Friday Night

    15 EYLÜL 2011