【发布时间】:2015-05-23 20:29:26
【问题描述】:
我正在开发一个带有 USB 仿真键盘读卡器的简单读卡器。 我从卡中收到一个字符串,我想检查该字符串是数字还是十六进制数。如果是十六进制数字,我只想接受该字符串的值。
由于我使用的是 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;
}
【问题讨论】:
-
我希望你得到的十六进制是 0x ......!如果是这样,它很容易区分!
-
如果不是,0x 装饰那么它根本不可能,是 "123" 123 还是 291 ?很难相信设备接口会被设计成这样的问题......