【问题标题】:How to create byte array with your own bytes?如何用自己的字节创建字节数组?
【发布时间】:2014-03-03 07:33:37
【问题描述】:

我必须创建自己的字节数组,例如:

byte[] connect = new byte[] { 0x00, 0x21, 0x60, 0x1F, 0xA1, 0x07 };

这个字节数组工作正常,但我需要更改一些十六进制代码。我试图做很多改变,但是 没有人工作。

Int32 hex = 0xA1; 

byte[] connect = new byte[] { 0x00, 0x21, 0x60, 0x1F, 0xA1, hex};


string hex = "0xA1"; 

byte[] connect = new byte[] { 0x00, 0x21, 0x60, 0x1F, 0xA1, hex};


byte[] array = new byte[1];
array[0] = 0xA1;

byte[] connect = new byte[] { 0x00, 0x21, 0x60, 0x1F, 0xA1, array[0]};

我不知道必须使用什么类型的变量来自动替换数组值。

【问题讨论】:

  • 这是一个字节数组。所以该数组的每个元素都是一个......?
  • 问题被否决了,因为...?

标签: c# arrays hex bytearray


【解决方案1】:

将您的 int 转换为字节:

Int32 hex = 0xA1; 
byte[] connect = new byte[] { 0x00, 0x21, 0x60, 0x1F, 0xA1, (byte)hex};

或者定义为字节开头:

byte hex = 0xA1; 
byte[] connect = new byte[] { 0x00, 0x21, 0x60, 0x1F, 0xA1, hex};

字符串到字节的转换:

static byte hexstr2byte(string s)
{
    if (!s.StartsWith("0x") || s.Length != 4)
        throw new FormatException();
    return byte.Parse(s.Substring(2), System.Globalization.NumberStyles.HexNumber);
}

如您所见,.NET 格式支持十六进制数字,但不支持“0x”前缀。完全省略该部分会更容易,但您的问题并不完全清楚。

【讨论】:

  • 谢谢!你的例子工作正常。但是我收到 String 中的值,当我尝试 Convert.ToInt32(hex) 时出现异常:输入字符串格式不正确。
  • 你没有在你的问题中确切地说你想从字符串转换......我将它添加到我的答案中。
【解决方案2】:

可能像“byte hex = 0xA1”一样声明它?

【讨论】:

    猜你喜欢
    • 2016-05-14
    • 1970-01-01
    • 2022-07-15
    • 2010-09-26
    • 2011-09-28
    • 2011-12-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多