【问题标题】:How do I convert less than 8 bytes to a ulong in C#?如何在 C# 中将少于 8 个字节的字节转换为 ulong?
【发布时间】:2014-12-13 12:26:10
【问题描述】:

所以我现在正在实施一种加密算法。 我需要将数据转换为字节,然后将其拆分为 64 位。我通过使用 BitConverter 来做到这一点。
但有时我的消息末尾没有 8 个字节,我想知道如何将少于 8 个字节的字节转换为 ulong。

有什么方法可以使用 BitConverter 来实现吗?我尝试移动字节,但它太复杂了,因为我不知道确切的字节数。

【问题讨论】:

  • 一个 64 位变量需要 8 个字节。如果少于 8 位但仍需要 64 位,则从左边开始用零字节填充它们,直到有 8 个字节。

标签: c# byte bitconverter ulong


【解决方案1】:

0s 填充字节数组,直到它适合所需的大小。

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);

参考:

【讨论】:

  • .Concat() 不修改数组。它只是创建了一个IEnumerable 来迭代两个数组。这个例子似乎可行,因为bytes.Length == 255while 循环被跳过了。要扩展数组,您必须使用Array.Resize,或者创建一个新数组,然后复制数据。
猜你喜欢
  • 2010-10-15
  • 2021-06-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-11-03
相关资源
最近更新 更多