Ver código fonte

Fixed parsing of hex numbers

Brad Robinson 6 anos atrás
pai
commit
e95529bd1d
1 arquivos alterados com 22 adições e 3 exclusões
  1. 22 3
      PetaJson.cs

+ 22 - 3
PetaJson.cs

@@ -788,10 +788,29 @@ namespace PetaJson
                     {
                         case LiteralKind.SignedInteger:
                         case LiteralKind.UnsignedInteger:
+                            {
+                                var str = reader.GetLiteralString();
+                                if (str.StartsWith("0x", StringComparison.InvariantCultureIgnoreCase))
+                                {
+                                    var tempValue = Convert.ToUInt64(str.Substring(2), 16);
+                                    object val = Convert.ChangeType(tempValue, type, CultureInfo.InvariantCulture);
+                                    reader.NextToken();
+                                    return val;
+                                }
+                                else
+                                {
+                                    object val = Convert.ChangeType(str, type, CultureInfo.InvariantCulture);
+                                    reader.NextToken();
+                                    return val;
+                                }
+                            }
+
                         case LiteralKind.FloatingPoint:
-                            object val = Convert.ChangeType(reader.GetLiteralString(), type, CultureInfo.InvariantCulture);
-                            reader.NextToken();
-                            return val;
+                            {
+                                object val = Convert.ChangeType(reader.GetLiteralString(), type, CultureInfo.InvariantCulture);
+                                reader.NextToken();
+                                return val;
+                            }
                     }
                     throw new InvalidDataException("expected a numeric literal");
                 };