Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 组合两个ulong值并将其转换为字节数组_C#_Arrays_Byte - Fatal编程技术网

C# 组合两个ulong值并将其转换为字节数组

C# 组合两个ulong值并将其转换为字节数组,c#,arrays,byte,C#,Arrays,Byte,我有一个整天都解决不了的问题。我是新来的,请你帮我一把 我有两个ulong值。我需要组合它们的二进制表示,并得到16字节的值。我知道C#不支持128位类型。但我也不需要在变量中保存这个值。我需要将此值转换为字节数组。 我试着把这样的价值观结合起来: long a = ((long)b << 64) + (long)c; long a=((long)b如果我运行以下命令: var x = (ulong)1; var y = (ulong)2; var result = Bi

我有一个整天都解决不了的问题。我是新来的,请你帮我一把

我有两个ulong值。我需要组合它们的二进制表示,并得到16字节的值。我知道C#不支持128位类型。但我也不需要在变量中保存这个值。我需要将此值转换为字节数组。 我试着把这样的价值观结合起来:

long a = ((long)b << 64) + (long)c;
long a=((long)b如果我运行以下命令:

var x = (ulong)1;
var y = (ulong)2;

var result =
    BitConverter.GetBytes(x)
        .Concat(BitConverter.GetBytes(y))
        .ToArray();
我明白了:

这就是您想要的吗?

Microsoft C#支持使用任意长度的整数。您可以组合两个值,例如在您给出的示例中,如下所示:

BigInteger a = b;
a <<= 64;
a += c;
我猜是家庭作业吧? 您可以将术语、Ulong a和b表示为字节数组。 之后,您可以为总和创建一个新的字节数组c。 对于每个字节,一点一点地进行,只需做一个普通的2补二进制加法,记住从一个字节到另一个字节的进位。
如果最后一个字节有进位,则应抛出某种类型的“ulong addition overflow exception”。

位转换器可以在某个偏移量处从字节数组中读取,但遗憾的是,它没有任何函数写入字节数组中的偏移量:(看来这正是我需要的…谢谢。但是你知道如何在pl sql中得到相同的结果吗?我需要比较结果。很好。我想用我的代码表达一种缺乏完全信心的感觉。谢谢你的建议,@BenVoigt。你还有什么建议吗?太棒了。@stilhead这是另一个问题,我没有答案。。。
byte[] array = { (byte)(b >> 56), (byte)(b >> 48), (byte)(b >> 40), (byte)(b >> 32),
                 (byte)(b >> 24), (byte)(b >> 16), (byte)(b >>  8), (byte)(b      ),
                 (byte)(c >> 56), (byte)(c >> 48), (byte)(c >> 40), (byte)(c >> 32),
                 (byte)(c >> 24), (byte)(c >> 16), (byte)(c >>  8), (byte)(c      ) };