将文本框的文本转换为要用作字节的字符串

本文关键字:文本 字节 字符串 转换 | 更新日期: 2023-09-27 18:31:17

好的,所以我想在我的 c# 窗体上有几个文本框,然后当单击某个按钮时,它会获取每个文本框中的文本并将其转换为要写入文件的字节。我知道如何做所有事情,但将文本框的文本转换为字节。谁能帮忙?文本框文本已经是十六进制形式,因此不必转换。

将文本框的文本转换为要用作字节的字符串

对于给定的文本框:

byte data = byte.Parse(textBox1.Text, NumberStyles.AllowHexSpecifier);

第二个参数允许解析十六进制格式。答案是肯定的;如果给定的值太大;你会遇到一些问题(它会抛出)。您始终可以使用TryParse

MSDN for byte.TryParse: (MSDN)

MSDN for the NumberStyles enum: (MSDN)

您可以将字节作为 1 和 0 写入文本文件。

下面的示例假定您有一个名为 textbox1 的文本框、一个名为 buttonRecord_Click 的按钮单击事件,并且您已在代码顶部包含对 System.IO 命名空间的引用(使用 System.IO;)。将"PathOfYourTextFile.txt"替换为实际路径。

private void buttonRecordBytes_Click(object sender, EventArgs e)
    {
        // Break if textbox1 is empty.
        if (string.IsNullOrEmpty(textbox1.Text))
            return;
        // Variables:
        int charCount = textbox1.Text.Length;
        byte[] bytes = new byte[charCount];
        string[] byteStrings = new string[charCount];
        // StreamWriter will write the bytes to the text file.
        StreamWriter sw = new StreamWriter("PathOfYourTextFile.txt", true);
        // Record each character byte in textfile.
        int i = 0;
        foreach (char c in textbox1.Text)
        {
            // ASCII:
            try
            {
                bytes[i] = Convert.ToByte(c);
                byteStrings[i] = Convert.ToString(bytes[i], 2).PadLeft(8, '0');
            }
            // UTF8:
            catch
            {
                bytes[i] = Encoding.UTF8.GetBytes(c.ToString().ToCharArray())[i];
                byteStrings[i] = Convert.ToString(bytes[i], 2).PadLeft(24, '0');
            }
            // Append character and bit info to textfile.
            sw.WriteLine("Character '"" + c.ToString() + "'" bits as ones and zeros: " +
                byteStrings[i]);
            ListViewItem lvi = new ListViewItem(i.ToString());
            lvi.SubItems.Add(c.ToString());
            lvi.SubItems.Add(byteStrings[i]);
            listviewBytes.Items.Add(lvi);
            i++;
        }
    sw.Close();
    }