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ş:
Nasıl Onaltılık Dize ve Başkan versa i...
Nasıl Java hex bir dize bir bayt dizis...
Dize bayt dizisi dönüştürmek için en i...
Java Bayt Dizisi için bir Dize Dizisi...
Dize dönüştürme bayt dizisi (Java)...