以下是菜单的启动界面:
c#源代码:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace WindowsFormsCovert
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
}
private byte[] StringToBytes(string TheString)
{
Encoding FromEcoding = Encoding.GetEncoding("UTF-8");
Encoding ToEcoding = Encoding.GetEncoding("gb2312");
byte[] FromBytes = FromEcoding.GetBytes(TheString);
byte[] Tobytes = Encoding.Convert(FromEcoding, ToEcoding, FromBytes);
return Tobytes;
}
private string BytesToString(Byte[] Bytes)
{
string MyString;
Encoding FromEcoding = Encoding.GetEncoding("gb2312");
Encoding ToEcoding = Encoding.GetEncoding("UTF-8");
byte[] Tobytes = Encoding.Convert(FromEcoding, ToEcoding, Bytes);
MyString = ToEcoding.GetString(Tobytes);
return MyString;
}
private void utf8togb2312_Click(object sender, EventArgs e)
{
if ((gb2312.Text != "") && (utf8.Text != ""))
{
MessageBox.Show("不能两个文本框中同时包含字符", "警告!");
}
else
{
if (gb2312.Text == "")
{
byte[] StringsToByte = StringToBytes(utf8.Text);
gb2312.Text = "";
foreach (byte MyByte in StringsToByte)//遍历未知数组大小的成员
{
string Str = MyByte.ToString("X").ToUpper();
gb2312.Text += "0x" + (Str.Length == 1 ? "0" + Str : Str) + " ";
}
}
else
{
byte[] Data = new byte[gb2312.Text.Length / 2];
int i;
try
{
string buffer = gb2312.Text;
buffer = buffer.Replace("0x", string.Empty);
buffer = buffer.Replace(" ", string.Empty);
for(i = 0; i < buffer.Length / 2; i++)
{
Data[i] = Convert.ToByte(buffer.Substring(i * 2, 2), 16);
}
utf8.Text = BytesToString(Data);
}
catch
{
MessageBox.Show("请从新输入!", "错误");
}
}
}
}
}
}