我需要将一个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();
}
}
答案 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 );