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);