1.
我如何重新诠释一个浮动到一个int(或一个双倍到一个长)?
我如何重新诠释一个浮动到一个int(或一个双倍到一个长)?
float f = 2.0f; int i = (int)f; // causes conversion
我只想将位模式从f复制到i.如何才能做到这一点?
2.
C#中的隐式和显式运算符使用一个中间对象,因为运算符函数是’static’
public static implicit operator MyClass(double s) { return new MyClass(s); } .. .. MyClass m = 2.2; // this code uses 'm' and one intermediate object.
X- 20045 X- 200 200 X- 200 X- 200 X- 200 X- 200 X- 200 X- 200 X- 200 X- 200 X- 200 X- 200 200我的理解正确吗?新新200的X- 200新新200新200新200新200新200新200新200新200新200新200新200新200新200新200新200新200新200新200新200新200新200新200新200新200新新200新200新新200新200新新200新200新新200新200新新200新200新新200新200新新200新200新新200新新200新新200新新200新新200新Version旗新新旗新新200如果是这样,怎么办?
谢谢
解决方法
>
BitConverter类可以检索任何原始类型的字节,然后您可以使用它们来创建一个int.另一个选项是
Buffer.BlockCopy,如果你有大量的转换做.
float ff = 2.0f; int ii = BitConverter.ToInt32(BitConverter.GetBytes(ff),0); float[] ff = new float[...]; int[] ii = new int[ff.Length]; Buffer.BlockCopy(ff,ii,ff.Length * 4); // byte-wise copy of ff into ii
> C#中没有任何其他选项,但是,我认为虽然在正确的情况下,将会有一个副本,但任何足够简单的实现都将完成JIT优化,从而可能无需复制.