获取数字字符串并检查它是十六进制数还是十进制数 C#
Get a Numeric String and Check if is a Hex or Dec number C#
我正在使用 USB 模拟器键盘卡 reader 开发一个简单的卡 reader。
我从卡上收到一个字符串,我想检查该字符串是数字还是十六进制数字。如果是十六进制数,我只想接受该字符串的值。
由于我使用的是 C#,所以我知道我可以使用正则表达式,但问题是十六进制数也只能包含数字而不能包含字母。
有人可以帮助我吗?
谢谢
我的代码:
public string ProcessReadContentNumber(string ReadContentNumber)
{
Int64 cNumber;
var hexStyle = System.Globalization.NumberStyles.HexNumber;
// Check If is HEX
if (Int64.TryParse(ReadContentNumber, hexStyle, CultureInfo.CurrentCulture, out cNumber))
{
String First3Byte = ReadContentNumber.Substring(0, 6);
String NextBytes = ReadContentNumber.Substring(6);
//Convert First 3 Bytes
Int64 decAgain1 = int.Parse(First3Byte, System.Globalization.NumberStyles.HexNumber);
//Convert Last 4 Bytes
Int64 decAgain2 = Int64.Parse(NextBytes, System.Globalization.NumberStyles.HexNumber);
String FinalNumber = decAgain1.ToString() + "-" + decAgain2.ToString();
return FinalNumber;
}
return null;
}
为什么需要为此使用正则表达式?尝试解析它:
string maybeHex = "fffe";
int number;
var hexStyle = System.Globalization.NumberStyles.HexNumber;
if( int.TryParse(maybeHex, hexStyle, CultureInfo.CurrentCulture, out number))
{
// valid
Console.WriteLine("Valid hex number: " + number);
}
拒绝像 978787879
这样的输入,即使它是一个有效的整数。
我正在使用 USB 模拟器键盘卡 reader 开发一个简单的卡 reader。 我从卡上收到一个字符串,我想检查该字符串是数字还是十六进制数字。如果是十六进制数,我只想接受该字符串的值。
由于我使用的是 C#,所以我知道我可以使用正则表达式,但问题是十六进制数也只能包含数字而不能包含字母。
有人可以帮助我吗? 谢谢
我的代码:
public string ProcessReadContentNumber(string ReadContentNumber)
{
Int64 cNumber;
var hexStyle = System.Globalization.NumberStyles.HexNumber;
// Check If is HEX
if (Int64.TryParse(ReadContentNumber, hexStyle, CultureInfo.CurrentCulture, out cNumber))
{
String First3Byte = ReadContentNumber.Substring(0, 6);
String NextBytes = ReadContentNumber.Substring(6);
//Convert First 3 Bytes
Int64 decAgain1 = int.Parse(First3Byte, System.Globalization.NumberStyles.HexNumber);
//Convert Last 4 Bytes
Int64 decAgain2 = Int64.Parse(NextBytes, System.Globalization.NumberStyles.HexNumber);
String FinalNumber = decAgain1.ToString() + "-" + decAgain2.ToString();
return FinalNumber;
}
return null;
}
为什么需要为此使用正则表达式?尝试解析它:
string maybeHex = "fffe";
int number;
var hexStyle = System.Globalization.NumberStyles.HexNumber;
if( int.TryParse(maybeHex, hexStyle, CultureInfo.CurrentCulture, out number))
{
// valid
Console.WriteLine("Valid hex number: " + number);
}
拒绝像 978787879
这样的输入,即使它是一个有效的整数。