玩字节...需要从java转换为C#(Playing with bytes…need to convert from java to C#)

编程入门 行业动态 更新时间:2024-10-28 10:31:20
玩字节...需要从java转换为C#(Playing with bytes…need to convert from java to C#)

我不习惯在我的代码中操作字节,我有这段用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

更多推荐

本文发布于:2023-08-05 23:18:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1441177.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:转换为   字节   java   convert   Playing

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!