System.Text.Encoding.ASCII.GetString() и нулики...
От: ghostrider Беларусь https://www.linkedin.com/in/andreipushkin
Дата: 31.07.03 14:37
Оценка:
Пишем вот такой вот код.
            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 >>
Re: System.Text.Encoding.ASCII.GetString() и нулики...
От: Аноним  
Дата: 19.06.09 07:37
Оценка:
Здравствуйте, ghostrider, Вы писали:

Тоже возникла похожая проблема с преобразованием. Как вы ее решили ?


PS: тема старенькая, но участников форума добавилось
Re[2]: System.Text.Encoding.ASCII.GetString() и нулики...
От: Tepp  
Дата: 20.06.09 21:48
Оценка:
s1=G
s2=G\0
s3=G\0\0
s3=G\0\0\0

.NET Framework 3.5
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.