如何在C中的单个字符中添加3个字符?

时间:2017-05-01 13:32:08

标签: c

我有像这样的char数组:

     private void LoadModel_cmbBx()
    {

        string strCon = Properties.Settings.Default.Database2ConnectionString;
        using (OleDbConnection conn = new OleDbConnection(strCon))
        {
            try
            {
                string strSql = "Select Model from EquipmentTable where [Manufacturer] = '" + Manufacturer_cmbBx.Text + "' and [Type] = '" + Type_cmbBx.Text + "'";
                OleDbDataAdapter adapter = new OleDbDataAdapter(new OleDbCommand(strSql, conn));
                DataSet ds = new DataSet();
                adapter.Fill(ds);
                Model_cmbBx.DataSource = ds.Tables[0];
                Model_cmbBx.ValueMember = "Model";
                conn.Close();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);

            }
        }
    }

我想将[0],[1],[2]转换为b [0],将[3],[4],[5]转换为b [1]。所以我可以这样:

char a[6] = {49, 50, 54, 49, 49, 54}; // ASCII '1', '2', '6', '1', '1', '6'
char b[2];

我该怎么做?

2 个答案:

答案 0 :(得分:5)

你可以这样做:

b[0] = (a[0] - '0') * 100 + (a[1] - '0') * 10 + (a[2] - '0');

,类似于b [1]。

请注意,如果a中的字符不是数字,或者表示可以存储在char范围之外的值,则结果将是未定义的。

答案 1 :(得分:2)

您似乎正在将十进制表示转换为字节。 sscanf可以帮助您解决此问题,如下所示:

char a[6] = {49, 50, 54, 49, 49, 54};
signed char b[2];
sscanf(a, "%3hhi%3hhi", &b[0], &b[1]);

Demo.