【问题标题】:Remove first and last bytes from byte array?从字节数组中删除第一个和最后一个字节?
【发布时间】:2016-02-23 10:55:34
【问题描述】:

我正在以字节为单位读取字节数组。数字以<uint16> 格式发送,包括“”符号,以二进制格式00111100 XXXXXXXX XXXXXXXX 00111110 发送,其中“X”构成 16 位无符号整数。

我想删除“”字符,它们始终是第一个和最后一个字节。这将允许我将 16 位无符号整数从二进制转换为整数。

这样做最干净的方法是什么?

【问题讨论】:

  • 您可以使用Array.Copy。您可以指定要从源复制的数组的开始和结束。在那里你可以消除。参考this

标签: c# binary byte bytearray


【解决方案1】:

你可以使用 Linq 简单地做到这一点:

var array = new char[] { '<', '0', '1', '1', '>' };
var trimmedArray = array.Skip( 1 ).Take( array.Count() - 2 ).ToArray();

【讨论】:

  • 永远不知道这也是可以实现的。因为我目前正在使用十六进制字符串并像 string HexTLV = string.Concat(HexResponse.Skip(2).Take(HexResponse.Length - 4)); 一样使用它
【解决方案2】:

您可以使用 Array.Copy 将一个数组的一部分复制到另一个数组中:

    var source = new int[] { 0, 1, 2, 3, 4 };

    var sourceStartIndex = 1;
    var destinationLength = source.Length - 2;
    var destinationStartIndex = 0;

    var destination = new int[destinationLength];

    Array.Copy(source, sourceStartIndex, destination, destinationStartIndex, destinationLength);

https://dotnetfiddle.net/D0L4XP

【讨论】:

  • 这行得通 - 一个注意事项是它是“Array.Copy”而不是“Array.Clone”
  • 呃,是的,我会解决的!
猜你喜欢
  • 2014-06-29
  • 2014-04-25
  • 1970-01-01
  • 2011-04-11
  • 1970-01-01
  • 2013-12-12
  • 1970-01-01
  • 2017-05-13
相关资源
最近更新 更多