diff --git a/vbruntime/Microsoft.VisualBasic/Microsoft.VisualBasic.CompilerServices/IntegerType.vb b/vbruntime/Microsoft.VisualBasic/Microsoft.VisualBasic.CompilerServices/IntegerType.vb index 41f73991..bf9a83ac 100644 --- a/vbruntime/Microsoft.VisualBasic/Microsoft.VisualBasic.CompilerServices/IntegerType.vb +++ b/vbruntime/Microsoft.VisualBasic/Microsoft.VisualBasic.CompilerServices/IntegerType.vb @@ -29,6 +29,7 @@ ' WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. Imports System +Imports System.Globalization Imports System.Runtime.InteropServices Namespace Microsoft.VisualBasic.CompilerServices _ @@ -90,6 +91,10 @@ Namespace Microsoft.VisualBasic.CompilerServices #End If Try + If Value.TrimStart(Nothing).StartsWith("&H", StringComparison.CurrentCultureIgnoreCase) Then + Return Int32.Parse(Value.TrimStart(Nothing).Substring(2), NumberStyles.AllowHexSpecifier) + End If + #If TRACE Then System.Console.WriteLine("TRACE:IntegerType.FromString:Value:" + Int32.Parse(Value).ToString()) #End If diff --git a/vbruntime/Test/Microsoft.VisualBasic.CompilerServices/IntegerTypeTest.cs b/vbruntime/Test/Microsoft.VisualBasic.CompilerServices/IntegerTypeTest.cs index 000f2022..35298696 100644 --- a/vbruntime/Test/Microsoft.VisualBasic.CompilerServices/IntegerTypeTest.cs +++ b/vbruntime/Test/Microsoft.VisualBasic.CompilerServices/IntegerTypeTest.cs @@ -75,6 +75,16 @@ public void FromString2() i = Microsoft.VisualBasic.CompilerServices.IntegerType.FromString(st); } + [Test] + public void FromStringHex() + { + int i; + i = Microsoft.VisualBasic.CompilerServices.IntegerType.FromString("&H1aB"); + Assert.AreEqual (0x1ab, i, "&H1aB"); + i = Microsoft.VisualBasic.CompilerServices.IntegerType.FromString(" &H1"); + Assert.AreEqual (1, i, " &H1"); + } + #endregion #region FromObject