我不习惯在我的代码中操作字节,我有这段代码是用 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
最佳答案
- 在 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
关于c# - 玩字节...需要从 Java 转换为 C#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2726296/