Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何将文件中的32位十六进制字作为十六进制值读取为C而不是字符串(“e000483c”作为“0xe000483c”)_C#_String_Hex_Hexdump - Fatal编程技术网

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

C# 如何将文件中的32位十六进制字作为十六进制值读取为C而不是字符串(“e000483c”作为“0xe000483c”),c#,string,hex,hexdump,C#,String,Hex,Hexdump,我有一个输入文件,其中包含十六进制单词记录列表,如“e000483c”、“0120003d”。我想读取它们并将其存储为十六进制数,而不是字符串。每个十六进制数是一个32位字,应该能够进一步按字节处理。输入文件可以有大的记录,有没有更快更可靠的方法来实现这一点 我真正面临的问题是,如果在使用stream reader或File.ReadAllLines作为字符串读取后尝试按字节处理单词,则这些都被视为字符。例如,我希望将“e”读作“0xe”,而不是“0x65” 最后,我想将“e000483c”解释

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

我真正面临的问题是,如果在使用stream reader或File.ReadAllLines作为字符串读取后尝试按字节处理单词,则这些都被视为字符。例如,我希望将“e”读作“0xe”,而不是“0x65”

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

来自:

将导致字符串
hex
转换为int
值。

要将字符串转换为“十六进制”字符串,只需将
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.
        }
    }
List listOfHexValues=new List();
var anArray=File.ReadAllLines(您的路径);
foreach(数组中的字符串hextr)
{
尝试
{
inthex=int.Parse(temp,System.Globalization.NumberStyles.HexNumber);
列表hexvalues.Add(十六进制);
}
抓住
{
//该行不是有效的整数。
}
}

这是假设您的文件每行有一个十六进制数。但是您应该知道,int将把十六进制值转换为适当的dec值。如果您想保留“0x00000000”格式,那么您需要将它们作为字符串进行维护,对不起。

对于您想要的内容有点困惑,但为了它的价值:将“e000483c”存储为
int
并以“0x”开头是处理c#中十六进制值的最有效方法。我不太明白。您想将它们保留为前面有
0x
的字符串,还是想将它们转换为数字?我想将它们转换为数字,但转换为十六进制value@Karthik请参阅我的答案,以获取一些示例代码,从而实现您想要的功能。然而,外卖是1。您可以在不使用“0x”的情况下按原样解析这些字符串,并显示我的方法。二,。如果希望将十六进制保持为十六进制而不是十进制,则需要将它们保持为字符串,或转换为十进制,进行计算,然后将结果输出为
“0x”+yourNewHexValue
    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.
        }
    }