diff --git a/Json5/Json5Number.cs b/Json5/Json5Number.cs index f2aabe5..0aa1086 100644 --- a/Json5/Json5Number.cs +++ b/Json5/Json5Number.cs @@ -1,3 +1,5 @@ +using System.Globalization; + namespace Json5 { public class Json5Number : Json5Primitive @@ -21,7 +23,7 @@ protected override object Value internal override string ToJson5String(string space, string indent) { - return this.value.ToString(); + return this.value.ToString(CultureInfo.InvariantCulture); } public static implicit operator double(Json5Number value) diff --git a/Json5/Parsing/Json5Lexer.cs b/Json5/Parsing/Json5Lexer.cs index b56f1ee..d9c9a3c 100644 --- a/Json5/Parsing/Json5Lexer.cs +++ b/Json5/Parsing/Json5Lexer.cs @@ -558,7 +558,8 @@ public Json5Token Read() } // Parse this value with BigInteger because ulong can only parse numbers up to 0xFFFFFFFFFFFFFFFF. - return Token(Json5TokenType.Number, sign * (double)BigInteger.Parse(valueBuffer, NumberStyles.HexNumber), inputBuffer); + // Add '0' to valueBuffer since otherwise it will be parsed as signed value (e.g. ff would be -1) + return Token(Json5TokenType.Number, sign * (double)BigInteger.Parse("0" + valueBuffer, NumberStyles.HexNumber), inputBuffer); case State.String: switch (r)