如何读取文件中的32位十六进制字作为C#中的十六进制值而不是字符串(“e000483c”为“0xe000483c”)

问题描述:

我有一个输入文件,其中包含十六进制字记录列表,如“e000483c”,“0120003d ”。我想读取它们并以十六进制数字形式存储,而不是字符串形式。每个十六进制数字都是一个32位的字,应该能够按字节进一步处理。输入文件可以有大量记录,有没有更快更可靠的方法来实现这一点?如何读取文件中的32位十六进制字作为C#中的十六进制值而不是字符串(“e000483c”为“0xe000483c”)

我面临的问题实际上是,如果尝试在使用流读取器或File.ReadAllLines读取字符串之后尝试处理单词字节,则将这些字符视为字符。例如,我想将'e'读作'0xe'而不是'0x65'。

最终我想将“e000483c”解释为“0xe000483c”。

+2

对你想要什么感到困惑,但对于它的价值: 将“e000483c”作为以“0x”开头的“int”存储是处理c#中十六进制值的最有效方式。 –

+0

不知道我明白。你想保留它们作为字符串与前面的'0x'或你想要将它们转换为数字吗? – Deolus

+0

我希望他们转换为数字,但作为十六进制值 – Karthik

Microsoft documentation

int value = Convert.ToInt32(hex, 16); 

会导致字符串hex在被转换到INT value.

将字符串转换为 “六角” 的字符串,简单地说0x在面前:

string newValue = "0x" + oldValue; 

你选择的方法真的取决于你想要1)一个整数还是2)一个十六进制字符串代表作为你的最终结果,你需要一个整数。

没有“十六进制数”这样的东西。您可以读取它以十六进制表示的字符串,也可以读取该字符串并将其转换为整数。

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 

试试这个代码:

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内部会将你的十六进制值转换为合适的十进制值。如果你想保持“0x00000000”格式,那么你需要把它们保持为字符串,对不起。