当我尝试在 Linux 控制器上运行 ac# 程序时,出现以下错误:
Process terminated. Couldn't find a valid ICU package installed on the system. Set the configuration flag System.Globalization.Invariant to true if you want to run with no globalization support.
at System.Environment.FailFast(System.String)
at System.Globalization.GlobalizationMode.GetGlobalizationInvariantMode()
at System.Globalization.GlobalizationMode..cctor()
at System.Globalization.CultureData.CreateCultureWithInvariantData()
at System.Globalization.CultureData.get_Invariant()
at System.Globalization.CultureInfo..cctor()
at System.StringComparer..cctor()
at System.StringComparer.get_OrdinalIgnoreCase()
at Microsoft.Data.Sqlite.SqliteConnectionStringBuilder..cctor()
Run Code Online (Sandbox Code Playgroud)
我想安装 ICU 软件包来消除此错误。所以我从这个网站下载了一个包: International Components for Unicode
当我在控制器上安装该软件包时,我仍然收到该消息。是否有任何正确的方法可以在 Linux 控制器上安装 ICU 软件包,以便我可以摆脱此消息?
PS(打开全球化不变量不是一个选项,因为我的代码(SQL-Server)不允许它打开......)
我目前正在为 F1 方向盘开发自己的显示器。F1 2019(由codemasters提供)通过UDP发送数据。该数据存储在字节数组中。
我在解码返回的数组时遇到一些问题。问题是我得到了很多信息,但我不知道如何处理它们。我将向您介绍我所尝试过的方法。
我通过端口 20777(游戏的标准端口)连接到游戏:
using System.Net;
using System.Net.Sockets;
var Client = new UdpClient(20777); //Connectionport
Run Code Online (Sandbox Code Playgroud)
在下一段代码中,我从游戏中获取信息:
var RemoteIP = new IPEndPoint(IPAddress.Any, 60240);
byte[] received = Client.EndReceive(res, ref RemoteIP);
Run Code Online (Sandbox Code Playgroud)
如您所见,游戏数据当前存储在字节数组中。
这是最困难的部分(对我来说)。
F1 2019 发送的数据打包在结构中(据我从他们的网站了解到)。但我不知道如何从字节数组中获取信息并放入正确的变量中(例如,当前速度是多少,或者汽车处于什么档位)。
有关数据包的信息位于 Codemasters 的网站上:
https://forums.codemasters.com/topic/44592-f1-2019-udp-specification/
现在真正的问题是:
当我输入这行代码时:
short game_version = BitConverter.ToInt16(received, 0);
Run Code Online (Sandbox Code Playgroud)
我将其显示在文本框中,变量game_version现在是 2019 年。
我不明白为什么indexnumber2019年的字节转换为0。
而且我不知道使用哪些索引号来获取我想要的每个变量。
我希望有人能够对这个问题有所启发。在codemasters论坛上似乎每个人都知道如何从字节数组中获取数据。
亲切的问候。