1. 最近在做一个Socket通讯的例子,但是如果使用UTF-8编码传输中文的话取和的会不一样。早上做了测试 。

    string str = "a我。.";看代码中间是一个英文,一个中文一个中文的句号和一个一般的句号,按照全角占两字节,中文占两字节,算出来该是6个字节才行:

   在下面的测试中:

          

  string str = "a我。.";

            Console.WriteLine(Encoding.Default.GetByteCount(str)); //6
            Console.WriteLine(Encoding.ASCII.GetByteCount(str));   //4
            Console.WriteLine(Encoding.UTF32.GetByteCount(str));  16
            Console.WriteLine(Encoding.UTF8.GetByteCount(str));    8

            所以在通迅中要取得长度该用 Encoding.Default.GetByteCount(str);

2.接下来引出正题,在上面的测试后,我接下来想显示各个Byte,在我以前的写法中,我习惯 Encoding.Default.GetByteCount(str).ToList().Foreach();之前也测试过这样效果不是很好,比一般的Foreach慢,然后就自己写了个扩展方法,扩展方法很简单,直接针对IEnumable<T>扩展就行了,可是写完过后觉得很奇怪,foreach是非常简单的了,为什么微软的foreach必须要是list才行呢,直到现在也没有答案,我只是觉得是不是微软的程序员里面也有脑袋发热的,晚上无聊就反编译看了下源码,里面东西不多,但是觉得很奇怪,做个标记,以后再研究了。

 

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-01-02
  • 2021-09-26
  • 2021-06-26
  • 2022-12-23
猜你喜欢
  • 2021-09-06
  • 2021-08-25
  • 2022-12-23
  • 2022-12-23
  • 2021-07-12
  • 2022-01-03
相关资源
相似解决方案