首先,我会为目标设定一些背景知识,然后向您展示我的代码,以及当前我认为哪种方法是目前最佳的方法。

我的目标:我有一个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/

10-13 02:00