【问题标题】:Integer to Byte Array In C#C#中的整数到字节数组
【发布时间】:2015-12-19 21:19:32
【问题描述】:

如何将 int 转换为字节数组,并将其他附加到字节数组。

举例

我想把它151219转换成`

new byte[6] { 0x31, 0x35, 0x31, 0x32, 0x31, 0x39 }`

并附加到:

new byte[17] { 0x01, 0x52, 0x35, 0x02, 0x50, 0x31, 0x28, --- append here ---, 0x3B, 0x29, 0x03, 0x06 }

【问题讨论】:

  • 151219怎么变成0x31、0x35、0x31、0x32、0x31、0x39?
  • 为你更新了#Fᴀʀʜᴀɴ Aɴᴀᴍ nthelp.com/ascii.htm

标签: c# arrays hex byte


【解决方案1】:

以下代码会将int 转换为代表值的每个字符的byte 数组:

int value = 151219;
string stringValue = value.ToString(CultureInfo.InvariantCulture);
byte[] bytes = stringValue.Select(c => (byte) c).ToArray();

要将它插入到您的原始数组中,这样的事情应该可以解决问题:

private byte[] InsertInto(byte[] original, byte[] toInsert, int positionToInsert)
{
    byte[] newArray = new byte[original.Length + toInsert.Length];

    Array.Copy(original, newArray, positionToInsert);
    Array.Copy(toInsert, 0, newArray, positionToInsert, toInsert.Length);
    Array.Copy(original, positionToStart, newArray, positionToInsert + toInsert.Length, original.Length - positionToInsert);
    return newArray;
}

【讨论】:

    【解决方案2】:

    您可以创建一个追加数组的 AppendInto 方法,并使用Encoding.ASCII.GetBytes 将字符串转换为字节数组。

    private byte[] AppendInto(byte[] original, byte[] toInsert, int appendIn)
    {
        var bytes = original.ToList();
        bytes.InsertRange(appendIn, toInsert);
        return bytes.ToArray();
    }
    

    那就用函数吧

    var toInsert = Encoding.ASCII.GetBytes("151219");
    
    var original = new byte[11] { 0x01, 0x52, 0x35, 0x02, 0x50, 0x31, 0x28, 0x3B, 0x29, 0x03, 0x06 };
    AppendInto(original, toInsert, 7);
    

    结果

    字节[17] {“0x01”、“0x52”、“0x35”、“0x02”、“0x50”、“0x31”、“0x28”、“0x31”、“0x35”、“0x31”、“0x32” "、"0x31"、"0x39"、"0x3B"、"0x29"、"0x03"、"0x06" }

    【讨论】:

    • 好主意。我会试试的。
    【解决方案3】:

    你没有整数数据类型,你有一个包含整数的字符串。那是完全不同的。

    您可以使用ASCIIEncoding.GetBytes

    byte[] bytes = (new System.Text.ASCIIEncoding()).GetBytes("151219");
    

    您可以像这样连接两个字节数组(给定两个字节数组ab):

    byte[] result = new byte[ a.Length + b.Length ];
    Array.Copy( a, 0, result, 0, a.Length );
    Array.Copy( b, 0, result, a.Length, b.Length );
    

    通过使用

    System.Array.Copy(sourceArray, sourceIndex, destinationArray, destinationIndex, length)
    

    【讨论】:

    • 那么,如何将它添加到另一个中?新字节[17] { 0x01, 0x52, 0x35, 0x02, 0x50, 0x31, 0x28, --- 在此处追加 ---, 0x3B, 0x29, 0x03, 0x06 }
    猜你喜欢
    • 2011-03-04
    • 2012-04-10
    • 2018-03-08
    • 2012-07-10
    • 1970-01-01
    • 2011-05-04
    • 2017-08-20
    • 2017-05-29
    相关资源
    最近更新 更多