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

  • CHISTOSITOJAJA

    CHISTOSITOJA

    27 HAZİRAN 2010
  • Julian Smith

    Julian Smith

    31 EKİM 2006
  • Ryan Billy

    Ryan Billy

    30 EKİM 2006