唉,让我说你什么好呢?既然你都“纵贯”.net和java了,难道没有走过正规的计算机原理和编程初步的培训么?int的-28就是byte的228,它们是同一个东西。我只好叹息了。

解决方案 »

  1.   

    如果你一定要知道.net如何“转换”,你可以这样测试一下:int x=-28;
    byte y=(byte)x;关键是,你纠结在什么“输出”上,我估计你是只相信眼睛(只在某个编码输出的控制台上去看)而不相信自己的大脑。
      

  2.   

    晕,c#的byte原来是无符号的,嗨,微软的设计.....
      

  3.   

    什么话?!你以为java的byte就是有符号的?世界上哪有什么有符号的byte?你自己对java“输出”数据的理解出了问题。
      

  4.   

    Byte字面理解确实应该是无符号的。
      

  5.   

    C#有带符号型和无符号型byte,默认是无符号型,你可以强制转换为带符号型
    sbyte如下
     var array = new byte[]{228, 184, 173, 229, 155, 189};
                    var value = Array.ConvertAll(array,b=>(sbyte)b);
                    foreach (sbyte v in value)
                    Console.Write(v+" ");
      

  6.   

    C#中所有数据类型都区分有符合和无符合,只是byte比较特殊默认无符合,有符合带s。
    其他默认有符号,而无符合的带u
      

  7.   


    符合在组合四字节的int时会存在很大的差异的。搞定了,用sbyte好了,
      

  8.   


    晕,java的手册上写的很清楚啊,byte的范围是 -128到127啊,类似c++中的char型啊,我计算机原理,补码学习的没问题,只是想知道c#有什么更科学的输出方法,不过感谢sp1234的热心回复,就是奇怪。
      

  9.   

    有一篇整理得非常好的文章:  string和byte[]的转换 (C#)
      

  10.   


    求问C语言的byte没符号吗?