byte [] test = Form1.StrToByteArray(“simpletext”); string encoded_text = BitConverter.ToString(test).Replace(“ - ”,“”)。ToLowerInvariant(); textBox1.Text = encoded_text; // 73696d706c6574657874
从这一行“73696d706c6574657874”取回“simpletext”??
// StrToByteArray()
public static byte[] StrToByteArray(string str)
{
System.Text.ASCIIEncoding encoding = new System.Text.ASCIIEncoding();
return encoding.GetBytes(str);
}
答案 0 :(得分:4)
你绝对必须使用十六进制开始吗?一个稍微更有效(并且可以通过框架方法反转)的选项是使用base 64:
string base64 = Convert.ToBase64String(test);
byte[] originalBytes = Convert.FromBase64String(base64);
string text = Encoding.ASCII.GetString(originalBytes);
我个人不建议使用ASCII作为编码,但UTF-8对ASCII字符的工作方式相同,但允许对所有Unicode进行编码。
如果你做必须使用hex,你需要一个方法来解析hex - I have an example here。
答案 1 :(得分:1)
var input = "73696d706c6574657874";
var bytes = Enumerable
.Range(0, input.Length)
.Where(x => 0 == x % 2)
.Select(x => Convert.ToByte(input.Substring(x, 2), 16))
.ToArray();
Console.WriteLine(Encoding.ASCII.GetString(bytes));
答案 2 :(得分:0)
应该这样做
public static byte[] StrToByteArray(string str)
{
System.Text.UTF8Encoding encoding = new System.Text.UTF8Encoding();
return encoding.GetBytes(str);
}
//这里我将ASCII编码替换为UTF 8编码如何说我Darin Dimitrov。尊重男人!非常th !!!
现在我的结果相当于A-ґР^ E - << / p>