c# - 玩字节...需要从 Java 转换为 C#

标签 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 >>> 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

最佳答案

  1. 在 C# 中不能有 final 参数
  2. 默认情况下,方法是“最终的”。
  3. 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/

相关文章:

java - Dagger 构建错误

java - 覆盖 JSP 中的默认 <%=%> 以防止 XSS Hack

java - 为什么我不能通过内部类引用访问外部类数据成员?

java - java中的字节数组

javascript - 在javascript中将ulong转换为8字节数组

c# - 如何在 .NET Web 应用程序中使用 Azure 应用服务身份验证功能中的用户角色?

c# - 与c#计算机程序和java android应用程序的数据库连接

c# - DataGridColumnHeader 中的 UserControl 不拉伸(stretch)

c - C 中不同的浮点变量给出不同的大小

c# - 有没有办法用 C# 编写 LLVM 前端编译器?