C# 加密,字符串到字节的转换

C# 加密,字符串到字节的转换,c#,type-conversion,C#,Type Conversion,我有一个字符串,我把它改为十六进制值,所以我想把它们存储在字节数组中,但它给我的错误是“输入字符串的格式不正确”。这是我的密码: byte[] PlainText = new byte[16]; byte[] MasterKey = new byte[16]; string input = "Hello"; char[] values = input.ToCharArray(); int i =0;

我有一个字符串,我把它改为十六进制值,所以我想把它们存储在字节数组中,但它给我的错误是“输入字符串的格式不正确”。这是我的密码:

        byte[] PlainText = new byte[16];
        byte[] MasterKey = new byte[16];
        string input = "Hello";
        char[] values = input.ToCharArray();
        int i =0;
        foreach (char letter in values)
        {
            int value = Convert.ToInt32(letter);
            string hexout = String.Format("{0:X}", value);
            PlainText[i++] = Convert.ToByte(hexout);
        }

更改初始代码

    byte[] PlainText = new byte[16];
    byte[] MasterKey = new byte[16];
    string input = "Hello";
    char[] values = input.ToCharArray();
    int i =0;
     string hexout=string.empty;
    foreach (char letter in values)
    {
        int value = Convert.ToInt32(letter);
        hexout+= String.Format("{0:X}", value);

    }
    plaintext=StringToByteArray(hexout);
用于将十六进制转换为字节数组

          public static byte[] StringToByteArray(String hex)
         {
      int NumberChars = hex.Length;
      byte[] bytes = new byte[NumberChars / 2];
       for (int i = 0; i < NumberChars; i += 2)
       bytes[i / 2] = Convert.ToByte(hex.Substring(i, 2), 16);
       return bytes;
      }
公共静态字节[]StringToByteArray(字符串十六进制)
{
int numbercars=十六进制长度;
字节[]字节=新字节[numbercars/2];
对于(int i=0;i

用于分析长字符串

   public static byte[] StringToByteArray(String hex)
 {
int NumberChars = hex.Length/2;
 byte[] bytes = new byte[NumberChars];
 using (var sr = new StringReader(hex))
{
for (int i = 0; i < NumberChars; i++)
  bytes[i] = 
    Convert.ToByte(new string(new char[2]{(char)sr.Read(), (char)sr.Read()}), 16);
 }
 return bytes;
}
公共静态字节[]StringToByteArray(字符串十六进制)
{
int numbercars=hex.Length/2;
byte[]bytes=新字节[numbercars];
使用(var sr=新的StringReader(十六进制))
{
for(int i=0;i
为什么要费心处理int和string?直接转换成字节就可以了。它应该转换成int,我直接使用了字母变量,它什么也没有转换。我不是说直接使用字母变量,我是说直接转换成字节。将循环体中的三行替换为
纯文本[i++]=Convert.ToByte(字母)
或甚至
明文[i++]=(字节)字母当我执行你的第一个代码时,它向我声明了一个错误:“无法找到任何可识别的数字”在“bytes[i/2]=convert…”行上@user3639111现在试试这一行OK,那么我如何验证纯文本数组现在只填充了字节格式的相同数据?当我安慰的时候,什么也没发生。
var bytes=System.Text.Encoding.UTF8.GetBytes(yourString);