Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 字符串到字节数组_C# - Fatal编程技术网

C# 字符串到字节数组

C# 字符串到字节数组,c#,C#,可能重复: 我有一根这样的线: “02150010000146DE6D8000000000000003801030E9738” 我需要的是以下字节数组: 02 15 00 01 00 14 6D E6 D8 00 00 38 01 03 0E 97 38(每对数字是相应字节中的十六进制值) 你知道我该怎么转换吗??谢谢 您非常想要第二个例子。 重要的部分是: Convert.ToInt32(hex, 16); 第一个参数是两个字符的字符串,指定十六进制值(例如,“DE”)。 第二个参数指定

可能重复:

我有一根这样的线: “02150010000146DE6D8000000000000003801030E9738”

我需要的是以下字节数组: 02 15 00 01 00 14 6D E6 D8 00 00 38 01 03 0E 97 38(每对数字是相应字节中的十六进制值)


你知道我该怎么转换吗??谢谢

您非常想要第二个例子。
重要的部分是:

Convert.ToInt32(hex, 16);
第一个参数是两个字符的字符串,指定十六进制值(例如,
“DE”
)。
第二个参数指定从Base-16(十六进制)转换

示例中未显示将字符串拆分为两个字符段,但这是解决问题所必需的。我相信这对你来说足够简单

我在谷歌上发现了这一点:“C#parse hex”

string str=“02150010000146de6d8000000000000003801030e9738”;
    string str = "021500010000146DE6D800000000000000003801030E9738";
    List<byte> myBytes = new List<byte>();

    try
    {
        while (!string.IsNullOrEmpty(str))
        {
            myBytes.Add(Convert.ToByte(str.Substring(0, 2), 16));
            str = str.Substring(2);
        }
    }
    catch (FormatException fe)
    {
        //handle error
    }
    for(int i = 0; i < myBytes.Count; i++)
    {
        Response.Write(myBytes[i].ToString() + "<br/>");
    }
List myBytes=新列表(); 尝试 { 而(!string.IsNullOrEmpty(str)) { Add(Convert.ToByte(str.Substring(0,2,16)); str=str.Substring(2); } } 捕获(格式化异常) { //处理错误 } for(int i=0;i”); }
var arr=新字节[s.Length/2];

对于(var i=0;我让您写些什么?“可能的重复”是一个完全不同的问题。他不是问如何使用某种编码将字符串编码为
字节[]
。此处的字符串包含应转换为
字节[]的十六进制值
。我看不出这些问题是完全重复的。你很想在这页上看到第二个例子:。它的“肉”是Convert.ToInt32(hex,16)(第二个参数指定从Base-16转换,这是hex)。我在谷歌上发现了这一点:“C#parse hex”我也看到了“重复”线程,我真的认为这是完全不同的。
Convert.ToByte
int
上?我的意思是,过早优化是不好的,但当最简单的方法也更快时…@BenVoigt啊,我发现在一次转换中可以实现正确的功能。谢谢!这段代码确实工作得很好。但只有一个细节,正确的代码是正确的“s.Substring”。感谢大家。可以使用Convert.ToByte而不是ToInt32。
var arr = new byte[s.Length/2];
for ( var i = 0 ; i<arr.Length ; i++ )
    arr[i] = (byte)Convert.ToInt32(s.SubString(i*2,2), 16);