我有一个输入文件,其中包含十六进制Word记录列表,例如" e000483c"," 0120003d"。我想阅读它们并存储为十六进制数字而不是字符串。每个十六进制数是一个32位字,应该能够按字节进一步处理它。输入文件可以有大量记录,有没有更快更可靠的方法来实现呢?
我面临的问题实际上是,如果在使用流阅读器或File.ReadAllLines读取为字符串后尝试以字节方式处理单词,则将其视为字符。例如,我想要' e'被读作' 0xe'而不是' 0x65'。
最终我想要解释" e000483c" as" 0xe000483c"。
答案 0 :(得分:1)
没有“十六进制数”这样的东西。您可以读取一个字符串,以十六进制表示,也可以读取字符串并将其转换为整数。
void Main()
{
string hexString = "e000483c";
int value = Convert.ToInt32(hexString, 16);
Console.WriteLine($"The hex string {hexString} is {value} in decimal");
}
// Define other methods and classes here
答案 1 :(得分:0)
int value = Convert.ToInt32(hex, 16);
将导致字符串hex
转换为int value.
将字符串转换为" hex"字符串,只需将0x
放在前面:
string newValue = "0x" + oldValue;
您选择的方法实际上取决于您是要1)整数还是2)表示整数的十六进制字符串作为最终结果。
答案 2 :(得分:0)
试试这段代码:
List<int> listOfHexValues = new List<int>();
var anArray = File.ReadAllLines(yourPath);
foreach (string hexStr in anArray)
{
try
{
int hex = int.Parse(temp, System.Globalization.NumberStyles.HexNumber);
listOfHexValues.Add(hex);
}
catch
{
//the line wasn't a valid integer.
}
}
这假设您的文件在每一行上都有1个十六进制数。但是你应该知道int里面会将你的十六进制值转换为适当的dec值。如果你想保留“0x00000000”格式,那么你需要将它们保存为字符串,抱歉。