将 0x0000000000000001 从字符串转换为长
Convert 0x0000000000000001 from string to long
我有一个以这种格式存储长值的 csv 文件:
0x0000000000000001
0x0000000000000002
0x0000000000000020
0x0000000000040000
我想将值保存在长变量中。
我可以直接保存数据只要例如:
long t = 0x0000000000040000;
这不会引发异常。
但是,我似乎无法将此格式从字符串(因为我从 csv 文件中读取)转换为长格式。
我试过了
Convert.ToInt64("0x0000000000040000");
如 this question
中所建议
我也试过了
long.Parse("0x0000000000040000", NumberStyles.HexNumber);
但这也会引发异常
把前面的0x去掉就可以解析了。
但是这个数字被保存时没有零(例如 0x0000000000000001 变成了 1),这不是我想要的。
Tl;博士:
有谁知道如何解析
string s = "0x0000000000000001";
到
long l = 0x0000000000000001;
?
像这样:
String source = "0x0000000000040000";
long result = Convert.ToInt64("0" + source.TrimStart('0', 'x'), 16);
甚至
long result = Convert.ToInt64(source, 16);
转换回 string
:
String back = String.Format("0x{0:x16}", result);
一种替代方法是,您可以使用 Substring
方法简单地省略转换的前两个字符:
string s = "0x0000000000040000";
long l = Convert.ToInt64(s.Substring(2), 16);
此代码将 hex 转换为 int 并检查无效输入并在处理 0x00 时解析 0x
if (int.TryParse(stringname.TrimStart('0').TrimStart('x'), NumberStyles.HexNumber, CultureInfo.InvariantCulture, out int result))
{
//use the value of "result"
}
else
{
//check the input
}
您需要添加
using System.Globalization;
我有一个以这种格式存储长值的 csv 文件:
0x0000000000000001
0x0000000000000002
0x0000000000000020
0x0000000000040000
我想将值保存在长变量中。 我可以直接保存数据只要例如:
long t = 0x0000000000040000;
这不会引发异常。
但是,我似乎无法将此格式从字符串(因为我从 csv 文件中读取)转换为长格式。
我试过了
Convert.ToInt64("0x0000000000040000");
如 this question
中所建议我也试过了
long.Parse("0x0000000000040000", NumberStyles.HexNumber);
但这也会引发异常
把前面的0x去掉就可以解析了。 但是这个数字被保存时没有零(例如 0x0000000000000001 变成了 1),这不是我想要的。
Tl;博士:
有谁知道如何解析
string s = "0x0000000000000001";
到
long l = 0x0000000000000001;
?
像这样:
String source = "0x0000000000040000";
long result = Convert.ToInt64("0" + source.TrimStart('0', 'x'), 16);
甚至
long result = Convert.ToInt64(source, 16);
转换回 string
:
String back = String.Format("0x{0:x16}", result);
一种替代方法是,您可以使用 Substring
方法简单地省略转换的前两个字符:
string s = "0x0000000000040000";
long l = Convert.ToInt64(s.Substring(2), 16);
此代码将 hex 转换为 int 并检查无效输入并在处理 0x00 时解析 0x
if (int.TryParse(stringname.TrimStart('0').TrimStart('x'), NumberStyles.HexNumber, CultureInfo.InvariantCulture, out int result))
{
//use the value of "result"
}
else
{
//check the input
}
您需要添加
using System.Globalization;