如何将少于8个字节转换为C#中的ulong?

如何将少于8个字节转换为C#中的ulong?,c#,byte,bitconverter,ulong,C#,Byte,Bitconverter,Ulong,所以我现在正在实现一个加密算法。 我需要将数据转换为字节,然后将其拆分为64位。我使用位转换器进行转换。 但有时我在一条消息的结尾没有8个字节,我想知道如何将少于8个字节的内容转换为ulong 有没有办法使用位转换器来实现这一点?我尝试移动字节,但太复杂了,因为我不知道字节的确切数量。用0填充字节数组,直到它符合要求的大小 byte[] bytes = new byte[255]{ 0x1F, 0x1A, 0x1B, 0x2C, 0x3C, 0x6D, 0x1E }; //7 bytes wh

所以我现在正在实现一个加密算法。 我需要将数据转换为字节,然后将其拆分为64位。我使用位转换器进行转换。
但有时我在一条消息的结尾没有8个字节,我想知道如何将少于8个字节的内容转换为ulong

有没有办法使用位转换器来实现这一点?我尝试移动字节,但太复杂了,因为我不知道字节的确切数量。

用0填充字节数组,直到它符合要求的大小

byte[] bytes = new byte[255]{ 0x1F, 0x1A, 0x1B, 0x2C, 0x3C, 0x6D, 0x1E }; //7 bytes

while(bytes.Length < 8){
   bytes.Concat(new byte[] { 0x00 });
}

long res = BitConverter.ToUInt64(bytes, 0);
byte[]bytes=新字节[255]{0x1F、0x1A、0x1B、0x2C、0x3C、0x6D、0x1E}//7字节
while(字节长度<8){
Concat(新字节[]{0x00});
}
long res=BitConverter.ToUInt64(字节,0);
参考:


64位变量需要8个字节。如果少于8位,但仍需要64位,请从左起用零字节填充,直到有8个字节。
.Concat()
不会修改数组。它只创建一个迭代两个数组的
IEnumerable
。此示例似乎可行,因为
bytes.Length==255
,并且跳过了
while
-循环。要扩展数组,您必须使用
array.Resize
,或者创建一个新数组并复制数据。