建立动态字串

时间:2019-01-12 23:03:36

标签: c#

我需要将一个int转换为一个三字节的字符串加上回车符,当您检查字符串的长度时,它需要返回4。该字符串是动态构建的

例如:

result = string.Format(@"\x{2}\x{1}\x{0}\x0D", Convert.ToByte(fiveDigitPin.GetValue(0)).ToString("X"),
                           Convert.ToByte(fiveDigitPin.GetValue(1)).ToString("X"), Convert.ToByte(fiveDigitPin.GetValue(2)).ToString("X"));

调用result.Length().ToString()时,以上返回4以上

这是代码(这是.net 3.5)

public class iToH
{
    byte[] fiveDigitPin;
    string result;

    public iToH()
    {
    }

     public string extract(string code)
     {
         if (code.Length != 5)
         {
             result = "Please enter a 5 digit pin";

         }
         else
         {
             int pin = int.Parse(code);

             fiveDigitPin = BitConverter.GetBytes(pin);

             result = string.Format(@"\x{2}\x{1}\x{0}\x0D", Convert.ToByte(fiveDigitPin.GetValue(0)).ToString("X"),
                           Convert.ToByte(fiveDigitPin.GetValue(1)).ToString("X"), Convert.ToByte(fiveDigitPin.GetValue(2)).ToString("X"));



         }


         return result.Length.ToString();

     }
}

1 个答案:

答案 0 :(得分:0)

因此,您想将PIN转换为长度为4的字节数组。前3个字节应保存整数输入(由于整数<= 99999,因此保证可以容纳三个字节),最后一个应为0x0D 。

var pin = 99999;
// extract three bytes from pin, append trailing \r
var buffer = new byte[4]
{
    (byte)(pin >> 16),
    (byte)(pin >> 8),
    (byte)pin,
    0x0D
};

由于您需要将此字符串作为字符串传递给库,因此可以将字节数组转换为等效的char数组,并从中生成字符串。

var bufferAsCharArray = buffer.Select(b => (char)b).ToArray();
var bufferAsString = new string(bufferAsCharArray );