怎么重新编码? BitConverter

时间:2010-02-22 07:26:11

标签: c#

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

3 个答案:

答案 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>