【发布时间】:2020-06-11 17:10:20
【问题描述】:
我们正在使用 Xamarin 跨平台开发为 Android 和 iOS 开发移动应用程序,该应用程序从蓝牙设备读取数据,该设备以浮点数传输数据,即 12.22,它将支持多种语言。
当它设置为英语时,我们所有的计算都很好,但当设置为非英语时,计算就完全出错了。我知道在处理“。”的非英语语言中有什么问题。作为 "," 表示 12.22 变为 12,22。因此,搞砸了我们的计算。
我发现了类似的问题,但它们将完整的语言强制为英语,这意味着我们丢失了翻译,并且其他修复看起来非常复杂,必须是一个简单的修复。
这个问题有简单的解决方法吗,比如在 Xamarin 多语言支持中设置一个标志
更新: 使用 BLE 传输代码,我们可以看到字符串,但是当它转换它时,我们会得到 6000000(法语)或 60(英语)。
private async Task<double>
GetDatastoreValue(Plugin.BLE.Abstractions.Contracts.IService service, string param)
{
try
{
var datastore_param_char = await service.GetCharacteristicAsync(Guid.Parse(datastore_param_uid));
var datastore_param_val = await service.GetCharacteristicAsync(Guid.Parse(datastore_value_uid));
await datastore_param_char.WriteAsync(Encoding.ASCII.GetBytes(param));
byte[] result = await datastore_param_val.ReadAsync();
string rslt = Encoding.ASCII.GetString(result);
Debug.WriteLine("GetDatastoreValue -> result " + result);
double val = Convert.ToDouble(rslt);
Debug.WriteLine("GetDatastoreValue -> val -> "+ val);
return val;
}
catch
{
return 0.0;
}
}
【问题讨论】:
-
您可以在解析数据时指定一种格式 - 大概它是以字符串的形式出现的 - 但由于您没有提供任何代码,我无法给您一个具体的示例。如果您希望我详细说明,请发布您的数据解析代码
标签: xamarin xamarin.forms xamarin.android xamarin.ios