Пишем вот такой вот код.
byte [] a1 = {0x47};
byte [] a2 = {0x47,0};
byte [] a3 = {0x47,0,0};
byte [] a4 = {0x47,0,0,0};
string s0 = "G";
string s1 = System.Text.Encoding.ASCII.GetString(a1);
string s2 = System.Text.Encoding.ASCII.GetString(a2);
string s3 = System.Text.Encoding.ASCII.GetString(a3);
string s4 = System.Text.Encoding.ASCII.GetString(a4);
byte [] b0 = System.Text.Encoding.ASCII.GetBytes(s0);
byte [] b1 = System.Text.Encoding.ASCII.GetBytes(s1);
byte [] b2 = System.Text.Encoding.ASCII.GetBytes(s2);
byte [] b3 = System.Text.Encoding.ASCII.GetBytes(s3);
byte [] b4 = System.Text.Encoding.ASCII.GetBytes(s4);
После его выполнения получаем...
s0 "G" string
s1 "G" string
s2 "G" string
s3 "G" string
s4 "G" string
s0.Length 1 int
s1.Length 1 int
s2.Length 1 int
s3.Length 1 int
s4.Length 1 int
s0==s1 true bool
s0==s2 false bool
s0==s3 false bool
s1==s2 false bool
s2==s3 false bool
+ b0 {Length=1} byte[]
+ b1 {Length=1} byte[]
+ b2 {Length=2} byte[]
+ b3 {Length=3} byte[]
+ b4 {Length=4} byte[]
System.Text.Encoding.ASCII.GetBytes() конечно расставляет все на свои места, но как быть мне, простому смертному, которому дали строку неизвестного происхождения?
Это баг или так надо? И если надо, то кому?
Дело было на Microsoft (R) Visual C# .NET Compiler version 7.00.9466 for Microsoft (R) .NET Framework version 1.0.3705
mono 0.24 ведет себя аналогичным образом
Интересно поведение этого кода на других версиях.
... << RSDN@Home 1.1 beta 1 >>
Здравствуйте, ghostrider, Вы писали:
Тоже возникла похожая проблема с преобразованием. Как вы ее решили ?
PS: тема старенькая, но участников форума добавилось