C# 如何在c语言中把字符串数组转换成字节数组#

C# 如何在c语言中把字符串数组转换成字节数组#,c#,C#,所以我有一根绳子 string enc = ""hx0.+dhx0-pdhx0pzdhx0xx"; 这是加密的,当解密具有十六进制值时,起始值为 0xfc,0xe8,0x82,0x00 那么这个 string decrypted = encryptDecrypt(enc); 那么这个 然后,我用split命令在每个逗号后将其除以 字符串[]hi=已解密。拆分(',') 当我检查使用此代码时 foreach (var item in hi ) { Console.WriteLine(i

所以我有一根绳子

string enc = ""hx0.+dhx0-pdhx0pzdhx0xx";
这是加密的,当解密具有十六进制值时,起始值为 0xfc,0xe8,0x82,0x00

那么这个

string decrypted = encryptDecrypt(enc);
那么这个 然后,我用split命令在每个逗号后将其除以 字符串[]hi=已解密。拆分(',')

当我检查使用此代码时

foreach (var item in hi )
{
    Console.WriteLine(item.ToString());
}
它显示了它的所有十六进制 我想将字符串数组值转换为 0xfc、0xe8、0x82、0x00及更多字节数组值
0xfc、0xe8、0x82、0x00也不是一些其他值

要将字符串转换为字节数组,可以使用GetBytes方法:

System.Text.Encoding.ASCII.GetBytes(item);

将每个字符串转换为字节,然后将其存储到
str
变量中

byte[,] str = new byte[50,50];
int i = 0;
foreach (var item in hi)
{
    Console.WriteLine(item.ToString());
    byte[] arr = Encoding.ASCII.GetBytes(item.ToString());
    str[i] = arr;
    i++;
}

有关更多信息,请参见此

这是唯一的字符串,还是该值会更改?您的阵列需要是动态的吗

     string [] arrayString = new string []; //Your Array.

     byte [] arrayByte = new byte[arrayString.Length];

     for (int i = 0; i < arrayString.Length; i++)
     {
          arrayByte[i] = Convert.ToByte(arrayString[i], 16);
     }
string[]数组字符串=新字符串[]//你的阵列。
byte[]arrayByte=新字节[arrayString.Length];
for(int i=0;i
对于某些文本不是Ascii,您可以使用Utf-8将字符串转换为字节

System.Text.Encoding.UTF8.GetBytes(item);
样本输入:

String[] hi = "00,01,fe,ff".Split(',');
转换使用lambda函数将每个十六进制字符串转换为一个字节:

Byte[] b = Array.ConvertAll(hi, h => Convert.ToByte(h, 16));
如果您需要不同类型的委托:

Byte[] b = Array.ConvertAll(hi, HexToByte);

private Byte HexToByte(String h) 
{
    return Convert.ToByte(h, 16);
}
Converter<String, Byte> hexToByte = h => Convert.ToByte(h, 16);
Byte[] b = Array.ConvertAll(hi, hexToByte);
相同,具有表达式体函数:

Byte[] b = Array.ConvertAll(hi, HexToByte);

private Byte HexToByte(String h) => Convert.ToByte(h, 16);
或者是另一种代表:

Byte[] b = Array.ConvertAll(hi, HexToByte);

private Byte HexToByte(String h) 
{
    return Convert.ToByte(h, 16);
}
Converter<String, Byte> hexToByte = h => Convert.ToByte(h, 16);
Byte[] b = Array.ConvertAll(hi, hexToByte);
Converter-hexToByte=h=>Convert.ToByte(h,16);
字节[]b=数组.ConvertAll(hi,hexToByte);

Array.ConvertAll
正在做真正的工作。从十六进制转换要么是一个可以内联完成的简单想法,要么是一个可以指定名称和/或完整实现块的重要想法

Convert.ToByte
方法将
string
转换为
byte
,例如
var b=Convert.ToByte(hextstring,16)。您只需以您认为合适的任何方式对每个元素执行此操作,例如使用
Array.ConvertAll
。可能的重复项不是100%确定您要求的内容,而是检查Encoding.UTF8.GetBytes(项);此代码将接收任何大小的字符串类型数组,并将其转换为任何大小的字节数组。请记住,它不会覆盖字符串数组,但如果您想在for循环中添加一行代码w/则可以。System.FormatException:“找不到任何可识别的数字。”我在尝试运行Byte[]b=array.ConvertAll(hi,h=>Convert.ToByte(h,16))时遇到此错误;请记住,数组以0开头。去掉“=”,它就不会崩溃。System.FormatException:“找不到任何可识别的数字。”我在尝试运行Byte[]b=Array.ConvertAll(hi,h=>Convert.ToByte(h,16))时出现此错误;它适用于“0xfc,0xe8,0x82,0x00”。字符串中必须有一些其他字符不是十六进制数字或0x前缀或分隔逗号。或者,您可能只是有一个0x而没有后面的十六进制数字。FormatException尽可能提供信息:
Byte[]b=Array.ConvertAll(hi,h=>{try{return Convert.ToByte(h,16);}catch(FormatException ex){throw new FormatException($@“无法解析”{h}“”,ex);}}});
GetBytes将char[]或字符串而不是string[]作为参数