diff --git a/src/Interpreting/ConverterFunctions.cs b/src/Interpreting/ConverterFunctions.cs
index 6522a78..fa2a618 100644
--- a/src/Interpreting/ConverterFunctions.cs
+++ b/src/Interpreting/ConverterFunctions.cs
@@ -10,6 +10,9 @@ namespace FileDBReader
public static class ConverterFunctions
{
#region FunctionDictionaries
+ ///
+ /// Conversion Rules: Hex String to their Number Representation.
+ ///
public static Dictionary> ConversionRulesImport = new Dictionary>
{
{ typeof(bool), (s, Encoding) => PrimitiveTypeConverter.GetObject(HexHelper.ToBytes(s)).ToString()},
@@ -26,6 +29,9 @@ public static class ConverterFunctions
{ typeof(String), (s, Encoding) => ToString(s, Encoding)}
};
+ ///
+ /// Conversion Rules: Number Strings to their Hex Representation.
+ ///
public static Dictionary> ConversionRulesExport = new Dictionary>
{
{ typeof(bool), (s, Encoding) => PrimitiveTypeConverter.GetBytes(bool.Parse(s))},
@@ -37,8 +43,16 @@ public static class ConverterFunctions
{ typeof(uint), (s, Encoding) => PrimitiveTypeConverter.GetBytes(uint.Parse(s))},
{ typeof(long), (s, Encoding) => PrimitiveTypeConverter.GetBytes(long.Parse(s))},
{ typeof(ulong), (s, Encoding) => PrimitiveTypeConverter.GetBytes(ulong.Parse(s))},
- { typeof(float), (s, Encoding) => PrimitiveTypeConverter.GetBytes(float.Parse(s, CultureInfo.InvariantCulture))},
- { typeof(double), (s, Encoding) => PrimitiveTypeConverter.GetBytes(double.Parse(s))},
+ { typeof(float), (s, Encoding) =>
+ {
+ var normalized = s.Replace(",", ".");
+ return PrimitiveTypeConverter.GetBytes(float.Parse(s, CultureInfo.InvariantCulture));
+ }},
+ { typeof(double), (s, Encoding) =>
+ {
+ var normalized = s.Replace(",", ".");
+ return PrimitiveTypeConverter.GetBytes(double.Parse(s, CultureInfo.InvariantCulture));
+ }},
{ typeof(String), (s, Encoding) => Encoding.GetBytes(s)}
};
diff --git a/unittests/FileDBReader-Tests/FileDBReader/ConverterFunctionsTest.cs b/unittests/FileDBReader-Tests/FileDBReader/ConverterFunctionsTest.cs
index 9f4f51f..879c5b5 100644
--- a/unittests/FileDBReader-Tests/FileDBReader/ConverterFunctionsTest.cs
+++ b/unittests/FileDBReader-Tests/FileDBReader/ConverterFunctionsTest.cs
@@ -89,6 +89,22 @@ public void TypeConversion_Test_String()
Assert.IsTrue(StringConversion_Test_Generic(new UTF32Encoding()));
}
+ [TestMethod]
+ public void InvariantFloatTests()
+ {
+ String float1 = "1.5";
+ var expected = BitConverter.GetBytes(1.5f);
+ var parsed = ConverterFunctions.ConversionRulesExport[typeof(float)](float1, Encoding.Unicode);
+
+ String float2 = "1,5";
+ var parsed2 = ConverterFunctions.ConversionRulesExport[typeof(float)](float1, Encoding.Unicode);
+ for (int i = 0; i < 4; i++)
+ {
+ Assert.AreEqual(parsed2[i], expected[i]);
+ Assert.AreEqual(parsed[i], expected[i]);
+ }
+ }
+
#region HelpfulFunctions
public bool StringConversion_Test_Generic(Encoding e)
{