首先,我会为目标设定一些背景知识,然后向您展示我的代码,以及当前我认为哪种方法是目前最佳的方法。
我的目标:我有一个XML文件,其中存储了5个值,我想用这些值创建一个字节数组
我使用Microsoft.PointOfService在我的应用程序中将以下命令硬编码为:
m_Printer.PrintNormal(PrinterStation.Receipt, System.Text.ASCIIEncoding.ASCII.GetString(new byte[] { 27, 112, 48, 55, 121 }))
如您所见,字节数组是硬编码的。
该代码可以正常工作,但是我所做的是创建了一个XML文件,该文件将被读取以读取值(这些值用于触发通过RJ11电缆连接到EPSON打印机的现金抽屉),以便用户可以更改xml,而不必重新编译代码。
XML如下:
<OpenCashDrawerCommand>
<Byte1 value="27"/>
<Byte2 value="112"/>
<Byte3 value="48"/>
<Byte4 value="55"/>
<Byte5 value="121"/>
</OpenCashDrawerCommand>
因此,您可以看到我正在从C#代码中获取硬编码值,并将其读入代码中5个变量中。
然后,我想使用这5个值创建一个字节数组,并像这样传递新的字节数组:
m_Printer.PrintNormal(PrinterStation.Receipt, System.Text.ASCIIEncoding.ASCII.GetString(MYNEWBYTEARRAY);
该链接包含我考虑使用的一种方法:Converting a list of ints to a byte array
var bytes = integers.Select(i => BitConverter.GetBytes(i)).ToArray();
因此,如果我可以将xml中的值(当前已经读入一个类)并构建一个字节数组,则可以直接获取该字节数组(它可以是静态的,对于我的单例来说可能更多class),那么工作就完成了:)
有什么想法花花公子吗?
非常感谢 :)
最佳答案
那么您需要从XML中提取值。我假设您可以使用XLINQ:
XDocument doc = XDocument.Parse(xmlString);
XElement root = from e in doc.DocumentElement/*don't remember the exact name*/;
var byteElements = new [] { root.Element("Byte1"), root.Element("Byte2"), ... };
var bytes =
byteElements
.Select(elem => (byte)elem); //this "cast" is an implicit conversion operator
.ToArray();
然后你去。如果我出了点小毛病,您将可以修复它。
关于c# - 使用单个值/变量构建字节数组[4],我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14842516/