c# - 检查十六进制数的条件
问题描述
我在文本文件中写入了一个十六进制数字。我需要检查 if-else 中十六进制数的条件。例如,文本文件中写入的起始编号为 1100,结束编号为 10FF。起始编号,1100是结束编号加1。这个递增过程由其他系统完成。
在我的情况下,系统将在读取文本文件中的数字后进行下一个过程。
这是我的代码:
var data = File
.ReadAllLines(Path)
.Select(x => x.Split('='))
.Where(x => x.Length > 1)
.ToDictionary(x => x[0].Trim(), x => x[1]);
Console.WriteLine("Start: {0}", data["Start"]);
Console.WriteLine("End: {0}", data["End"]);
if (data["Start"] == data["End"]+1)
{
//it will proceed to next process
}
else
{
//prompt not meet end number
}
问题是,它if (data["Start"] == data["End"]+1)
不起作用。我该如何解决这个问题?我需要先将十六进制数转换为 int 吗?
解决方案
在 C# 中,如果将字符串与数字连接,数字将被转换为字符串并附加到原始字符串的末尾:
如果您想对您的数字执行一些数学运算,您需要先将它们转换为正确的数据类型(在您的情况下 - 整数)。
为此,您可以使用以下命令之一:
if (Convert.ToInt32(data["Start"], 16) == Convert.ToInt32(data["End"], 16) + 1)
或者
if (int.Parse(data["Start"], NumberStyles.HexNumber) == int.Parse(data["End"], NumberStyles.HexNumber) + 1)
他们会将包含十六进制数字的字符串转换为该数字的十进制表示,然后它将表现为数字(例如,加法将按预期工作)。
推荐阅读
- python - 努力使用递归代码来二分搜索字符串
- django - Django:在一个页面中创建基于函数的视图登录和注册表单
- python - 将数据框中的最后 3 个工作日的数据替换为另一个
- android-studio - Android Studio 在使用 Internal Test Track 版本后不安装应用
- ios - 以编程方式更改 UIStackView 中 1 个子视图的大小
- java - 创建 JPA (Hibernate) 代理并稍后设置主键
- alexa - 如何在 Alexa 中关闭对话?
- php - Google Translate API 中的多个输入(q 参数),带有 PHP CURL
- javascript - 我应该使用环境变量或 module.exports 作为 Heroku 上的小型个人应用程序的用户名和密码吗?
- c - C - 忽略子目录名,只打印文件名