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

时间:2017-07-24 17:58:45

标签: c# string hex hexdump

我有一个输入文件,其中包含十六进制Word记录列表,例如" e000483c"," 0120003d"。我想阅读它们并存储为十六进制数字而不是字符串。每个十六进制数是一个32位字,应该能够按字节进一步处理它。输入文件可以有大量记录,有没有更快更可靠的方法来实现呢?

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

最终我想要解释" e000483c" as" 0xe000483c"。

3 个答案:

答案 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)

来自Microsoft documentation

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”格式,那么你需要将它们保存为字符串,抱歉。