将字符串长度转换为十六进制值以添加到List <byte> </byte>

时间:2012-02-01 16:26:42

标签: c# .net

我有一个List,我正在添加3个字节,其中一个是我动态传递给我的方法的字符串的长度。如何确定该字符串的长度并将int转换为我的list.add()方法中可接受的值。

以下代码:

string myString = "This is a sample string...I need its length";
int theLength = myString.Length;
List<byte> lb = new List<byte>();
lb.Add(0x81);
lb.Add(theLength); // this doesn't work
lb.Add(0x04);

TIA

3 个答案:

答案 0 :(得分:2)

试试这个:

lb.AddRange(BitConverter.GetBytes(theLength))

当然,您可能决定只需要最低有效位,在这种情况下,您可以进行简单的转换,或索引GetBytes()的结果,在这种情况下,这将是4个字节长。

有关BitConverter的更多信息: http://msdn.microsoft.com/en-us/library/system.bitconverter.getbytes.aspx

答案 1 :(得分:1)

如果字符串的长度在字节范围内:

lb.Add((byte)theLength);

答案 2 :(得分:1)

您必须将长度投射到byte

lb.Add((byte)theLength);

但正如您可能猜到的那样,您的长度并不总是适合单个字节。更具体地说明您对字节列表的期望,我们可以提供更好的答案(例如使用BinaryReader / BinaryWriter而不是字节列表。)