二进制到字符串/字符串到二进制

时间:2015-03-30 11:57:23

标签: c#

我想将文本转换为二进制文件,然后尝试将二进制文件转换为字符串文本。 如果tobin已经是字符串,我如何将 private void iTalk_Button_12_Click(object sender, EventArgs e) { ambiance_RichTextBox2.Text = tobin(ambiance_RichTextBox1.Text); } public string tobin(string inp) { StringBuilder sb = new StringBuilder(); foreach (char L in inp.ToCharArray()) { sb.Append(Convert.ToString(L, 2).PadLeft(8, '0')); } return sb.ToString(); } 转换回文本?

{{1}}

4 个答案:

答案 0 :(得分:3)

        private void iTalk_Button_12_Click(object sender, EventArgs e)
        {
            ambiance_RichTextBox2.Text = BinaryToString(ambiance_RichTextBox1.Text);
           //use what u need: BinaryToString or StringToBinary.
        }

将字符串转换为二进制:

        public static string StringToBinary(string data)
        {
            StringBuilder sb = new StringBuilder();

            foreach (char c in data.ToCharArray())
            {
                sb.Append(Convert.ToString(c, 2).PadLeft(8, '0'));
            }
            return sb.ToString();
        }

将二进制转换为字符串:

        public static string BinaryToString(string data)
        {
            List<Byte> byteList = new List<Byte>();

            for (int i = 0; i < data.Length; i += 8)
            {
                byteList.Add(Convert.ToByte(data.Substring(i, 8), 2));
            }

            return Encoding.ASCII.GetString(byteList.ToArray());
        }
祝你好运!

答案 1 :(得分:1)

你可以这样使用,

public static string BinaryToString(string data)
{
List<Byte> byteList = new List<Byte>();

for (int i = 0; i < data.Length; i += 8)
{
 byteList.Add(Convert.ToByte(data.Substring(i, 8), 2));
}

return Encoding.ASCII.GetString(byteList.ToArray());
}

答案 2 :(得分:1)

将字符串转换为二进制

string s = "hai"; 

byte []arr = System.Text.Encoding.ASCII.GetBytes(s);

将二进制转换为字符串

byte[] arr ;

string s =  Encoding.ASCII.GetString(arr);

答案 3 :(得分:1)

目前,您正在将char(可以表示为数字)转换为其二进制表示形式(此数字是ASCII数字)。但是如果要将字符串转换为二进制,则应使用编码。编码确定文本如何转换为二进制文件。

例如:

static void Main(string[] args)
{
    string input = "This is an example text.";

    Console.WriteLine(input);
    string asBin = ToBinary(input);
    Console.WriteLine(asBin);
    string asText = ToText(asBin);
    Console.WriteLine(asText);
}

static string ToBinary(string input, System.Text.Encoding encoding = null)
{
    if (encoding == null)
        encoding = System.Text.Encoding.UTF8;

    var builder = new System.Text.StringBuilder();
    var bytes = encoding.GetBytes(input); // Convert the text to bytes using the encoding

    foreach (var b in bytes)
        builder.Append(Convert.ToString(b, 2).PadLeft(8, '0')); //Convert the byte to its binary representation

    return builder.ToString();
}

static string ToText(string bytes, System.Text.Encoding encoding = null)
{
    if (encoding == null)
        encoding = System.Text.Encoding.UTF8;

    var byteCount = 8;
    var byteArray = new byte[bytes.Length / 8]; // An array for the bytes
    for (int i = 0; i < bytes.Length / byteCount; i++)
    {
        var subBytes = bytes.Substring(i * byteCount, byteCount); // Get a subpart of 8 bits
        var b = Convert.ToByte(subBytes.TrimStart('0'), 2); // Convert the subpart to a byte
        byteArray[i] = b; // Add the byte to the array
    }

    return encoding.GetString(byteArray); // Convert the array to text using the right encoding.
}

现在,如果您想使用ASCII编码,可以按如下方式调用函数:

Console.WriteLine(input);
string asBin = ToBinary(input, System.Text.Encoding.ASCII);
Console.WriteLine(asBin);
string asText = ToText(asBin, System.Text.Encoding.ASCII);
Console.WriteLine(asText);
相关问题