string str1 = "中华人民共和国";
            string str2 = "中国";            str1 = str1.PadRight(20, ' ');
            str2 = str2.PadRight(20, ' ');            MessageBox.Show(str1.Length.ToString());           //结果为20
            MessageBox.Show(str2.Length.ToString());           //结果为20            MessageBox.Show(Encoding.Default.GetByteCount(str1).ToString());           //结果为27,我想让这个长度为20
            MessageBox.Show(Encoding.Default.GetByteCount(str2).ToString());           //结果为22,我想让这个长度为20 PadLeft,PadRight能不能将字符串格式化的长度为字节长度,该如何处理?能否实现?

解决方案 »

  1.   

    GetByteCount获得是字节数,汉字是双字节的。
    PadRight/PadLeft是填充字符数的。
      

  2.   

    你按字节补20个就不需要用PadRight了。
    string str1 = "中华人民共和国";
    string str2 = "中国";
    byte[] temp1 = new byte[20];
    byte[] temp2 = new byte[20];
    for (int i = 0; i < 20; i++)
    {
        temp1[i] = temp2[i] = 0x20;//空格
    }
    Array.Copy(Encoding.Default.GetBytes(str1), temp1, Encoding.Default.GetByteCount(str1));
    Array.Copy(Encoding.Default.GetBytes(str2), temp1, Encoding.Default.GetByteCount(str2));
      

  3.   

    谢谢各位帮助
    问题已解决
    提供方法供参考int iLen = 20;string str1 = "中华人民共和国";
    string str2 = "中国";str1 = str1 + string.Empty.PadRight((iLen - Encoding.Default.GetByteCount(str1)));
    str2 = str2 + string.Empty.PadRight((iLen - Encoding.Default.GetByteCount(str2)));MessageBox.Show(Encoding.Default.GetByteCount(str1).ToString());
    MessageBox.Show(Encoding.Default.GetByteCount(str2).ToString());