byte[] x = new byte[]{1,2,3,33,50,80,70,155,210,5,239};
uint i = x[0];//在C#里byte向unit的装换是隐式完成的,你可以把一个byte直接当成unit类型的变量来处理而不会产生异常或者溢出

解决方案 »

  1.   

    不是指单纯的数据类型转换,而是把 4 个 byte 当成一个 uint 操作,在 C++ 中是像这样的:...
    LPBYTE lpubData = new BYTE[xxx];
    LPDWORD lpdwData = (LPDWORD)lpubData;//  现在对 lpdwData[0] 的操作就将会同时影响到 lpubData[0]、lpubData[1]、lpubData[2] 和 lpubData[3] 这 4 个字节里的内容我想知道除了用指针之外还有什么方法可以实现这样的操作。
      

  2.   

    >> 难道是标题没有吸引力众高手对这种问题不屑吗讨论的人不多是因为这个问题触到了C#的软肋。我想不出一个不使用unsafe指针并且和C++同样有效的方法——即使是BinaryReader,也比C++的方法要多一次内存拷贝。说到底就是安全性和性能的取舍问题:如果这段代码对程序性能的影响不大,那么FileStream或者MemoryStream加上BinaryReader要干净清楚安全的多,如果它对程序的总体性能至关重要,那么使用fixed/unsafe/pointer也是完全合理的解决方法——毕竟C#提供了这些语法构件。
      

  3.   

    多谢楼上,看来我还是用 unsafe 算了:)