C# 玩字节…需要从java转换到C

C# 玩字节…需要从java转换到C,c#,java,byte,C#,Java,Byte,我不习惯在我的代码中操作字节,我有一段用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 &

我不习惯在我的代码中操作字节,我有一段用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);
编辑:找到第二个问题的答案:

在C中不能有最终参数 默认情况下,方法是最终的。 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位移位运算符的更多信息:

在C中不能有最终参数 默认情况下,方法是最终的。 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位移位运算符的更多信息:

基本上去掉final,并将>>>更改为>>基本上去掉final,将>>>更改为>>

谢谢您的明确回答!java方法Double.doubleToLongBitsval;的任何等效项?还请记住,由于“byte”在C中是无符号的,而在Java中是有符号的,这就是为什么在C中不需要无符号字节移位运算符的原因。所有有符号整数都有无符号等价物。@ibiza我不确定。你应该试着回答另一个问题。谢谢你先生的明确回答!java方法Double.doubleToLongBitsval;的任何等效项?还请记住,由于“byte”在C中是无符号的,而在Java中是有符号的,这就是为什么在C中不需要无符号字节移位运算符的原因。所有有符号整数都有无符号等价物。@ibiza我不确定。你应该试着打开另一个问题。