我不习惯在我的代码中操作字节,我有这段用Java编写的代码,我需要将它转换为它的C#等价物:
protected static final int putLong(final byte[] b, final int off, final long val) { b[off + 7] = (byte) (val >>> 0); b[off + 6] = (byte) (val >>> 8); b[off + 5] = (byte) (val >>> 16); b[off + 4] = (byte) (val >>> 24); b[off + 3] = (byte) (val >>> 32); b[off + 2] = (byte) (val >>> 40); b[off + 1] = (byte) (val >>> 48); b[off + 0] = (byte) (val >>> 56); return off + 8; }在此先感谢您的所有帮助,我期待着从中吸取教训。
我还要知道是否存在与Java函数等效的C#:
Double.doubleToLongBits(val);编辑:找到我的第二个问题的答案: BitConverter.DoubleToInt64Bits
I am not used to manipulate bytes in my code and I have this piece of code that is written in Java and I would need to convert it to its C# equivalent :
protected static final int putLong(final byte[] b, final int off, final long val) { b[off + 7] = (byte) (val >>> 0); b[off + 6] = (byte) (val >>> 8); b[off + 5] = (byte) (val >>> 16); b[off + 4] = (byte) (val >>> 24); b[off + 3] = (byte) (val >>> 32); b[off + 2] = (byte) (val >>> 40); b[off + 1] = (byte) (val >>> 48); b[off + 0] = (byte) (val >>> 56); return off + 8; }Thanks in advance for all your help, I am looking forward to learn from this.
I would also appreciate to know if there is a C# equivalent to the Java function :
Double.doubleToLongBits(val);edit : found the answer to my second question : BitConverter.DoubleToInt64Bits
最满意答案
你不能在C#中拥有最终参数 方法默认为“final”。 C#中没有未签名的转移权限所以我们得到:
protected static int putLong(byte [] b, int off, long val) { b[off + 7] = (byte) (val >> 0); b[off + 6] = (byte) (val >> 8); b[off + 5] = (byte) (val >> 16); b[off + 4] = (byte) (val >> 24); b[off + 3] = (byte) (val >> 32); b[off + 2] = (byte) (val >> 40); b[off + 1] = (byte) (val >> 48); b[off + 0] = (byte) (val >> 56); return off + 8; }有关C#位移位运算符的更多信息: http : //www.blackwasp.co.uk/CSharpShiftOperators.aspx
You can't have final parameters in C# Methods are "final" by default. There is no unsigned shift right in C#So we get:
protected static int putLong(byte [] b, int off, long val) { b[off + 7] = (byte) (val >> 0); b[off + 6] = (byte) (val >> 8); b[off + 5] = (byte) (val >> 16); b[off + 4] = (byte) (val >> 24); b[off + 3] = (byte) (val >> 32); b[off + 2] = (byte) (val >> 40); b[off + 1] = (byte) (val >> 48); b[off + 0] = (byte) (val >> 56); return off + 8; }For more information on C# bitwise shift operators: http://www.blackwasp.co.uk/CSharpShiftOperators.aspx
更多推荐
发布评论