当前位置:编程学习 > C#/ASP.NET >>

十六进制数赋值到一个数组

请问如何读取.txt文本文件带空格的十六进制数并赋值到一个数组里。刚学VC有点搞不懂

文本文件的内容类似于 74 00 FB FD FF FE 12 34 68 0A BC ........中间是带空格的,有好多文件大小不

一,也就是说文件内容长度都不等。我想把它赋值到数组里类似于,

a[1]=0x74,a[2]=0x08,a[3]=0xFB,a[4]=0xFD........最近急用啊!哪个大神提供解决这个问题的代码,分都

给他。虽然就剩这么点分了.....

另外一个问题,有兴趣的也可以帮忙解决下:http://bbs.csdn.net/topics/390530481




C# --------------------编程问答-------------------- 不要指定读取某一个文件的数据。我做的是窗体应用程序,有“打开”按钮,可以选择读入某个文件,把其中的数据存到数组中 --------------------编程问答-------------------- 初学,用C#编写程序很头疼啊 --------------------编程问答--------------------

//你可以从文件读
string txt = "74 00 FB FD FF FE 12 34 68 0A BC";
//根据空格分割字符串成字符串数组
string[] hexWords = txt.Split(' ');
//转换成16进制数存储在byte类型数组中
byte[] hex = new byte[hexWords.Length];
for (int i = 0; i < hexWords.Length; i++)
{
    hex[i] = Convert.ToByte(hexWords[i],16);
}
--------------------编程问答--------------------

            using (StreamReader sr = new StreamReader(@"D:\1.txt"))
            {
                string text = sr.ReadToEnd();

                MatchCollection matches = Regex.Matches(text, "[0-9A-E]{2}");
                string[] a = new string[matches.Count];
                for (int i = 0; i < matches.Count; i++)
                {
                    a[i] = "0x" + matches[i].Value;
                }

                foreach (string i in a)
                {
                    Console.WriteLine(i);
                }
                sr.Close();
            }
--------------------编程问答--------------------

            using (StreamReader sr = new StreamReader(@"D:\1.txt"))
            {
                string text = sr.ReadToEnd();

                MatchCollection matches = Regex.Matches(text, "[0-9A-F]{2}");
                string[] a = new string[matches.Count];
                for (int i = 0; i < matches.Count; i++)
                {
                    a[i] = "0x" + matches[i].Value;
                }

                foreach (string i in a)
                {
                    Console.WriteLine(i);
                }
                sr.Close();
            }
--------------------编程问答-------------------- byte[] result = "74 00 FB FD FF FE 12 34 68 0A BC".Split(' ').Select(x => (byte)Convert.ToInt32(x, 16)).ToArray(); --------------------编程问答-------------------- 打开文件,每byte读,遇到空格就不存,不是空格就推倒list<byte>里

不考虑效率就这么做 --------------------编程问答--------------------
引用 5 楼 sunny906 的回复:

            using (StreamReader sr = new StreamReader(@"D:\1.txt"))
            {
                string text = sr.ReadToEnd();

                MatchCollection matches = Regex.Matches(text, "[0-9A-F]{2}");
                string[] a = new string[matches.Count];
                for (int i = 0; i < matches.Count; i++)
                {
                    a[i] = "0x" + matches[i].Value;
                }

                foreach (string i in a)
                {
                    Console.WriteLine(i);
                }
                sr.Close();
            }
 这样指定了一个文件using (StreamReader sr = new StreamReader(@"D:\1.txt"))
我想不要指定读取某一个文件的数据。我做的是窗体应用程序,有“打开”按钮,可以选择读入某个文件,把其中的数据存到数组中 --------------------编程问答--------------------
引用 6 楼 caozhy 的回复:
byte[] result = "74 00 FB FD FF FE 12 34 68 0A BC".Split(' ').Select(x => (byte)Convert.ToInt32(x, 16)).ToArray();
我是要从.txt文件中读取数据,不是这样指定几个数据 --------------------编程问答--------------------
引用 3 楼 hwenycocodq520 的回复:

//你可以从文件读
string txt = "74 00 FB FD FF FE 12 34 68 0A BC";
//根据空格分割字符串成字符串数组
string[] hexWords = txt.Split(' ');
//转换成16进制数存储在byte类型数组中
byte[] hex = new byte[hexWords.Length];
for (int i = 0; i < hexWords.Length; i++)
{
    hex[i] = Convert.ToByte(hexWords[i],16);
}
我是要从.txt文件中读取数据,不是这样指定几个数据 --------------------编程问答--------------------
引用 10 楼 u011483174 的回复:
Quote: 引用 3 楼 hwenycocodq520 的回复:


//你可以从文件读
string txt = "74 00 FB FD FF FE 12 34 68 0A BC";
//根据空格分割字符串成字符串数组
string[] hexWords = txt.Split(' ');
//转换成16进制数存储在byte类型数组中
byte[] hex = new byte[hexWords.Length];
for (int i = 0; i < hexWords.Length; i++)
{
    hex[i] = Convert.ToByte(hexWords[i],16);
}
我是要从.txt文件中读取数据,不是这样指定几个数据


我注释那里不是说明了吗?//你可以从文件读,读文件操作上面的朋友已经给出了,至于指定路径你可以从OpenDialog对象中取得文件路径,这些你就慢慢写写吧,我给出思路而已 --------------------编程问答--------------------
引用 7 楼 abutwang 的回复:
打开文件,每byte读,遇到空格就不存,不是空格就推倒list<byte>里

不考虑效率就这么做
 private void button1_Click(object sender, EventArgs e)
        {
            OpenFileDialog openFileDialog1 = new OpenFileDialog();

            openFileDialog1.InitialDirectory = "c:\\Desktop\\";
            openFileDialog1.Filter = "*.txt|*.txt";
            openFileDialog1.FilterIndex = 2;
            openFileDialog1.RestoreDirectory = true;

            if (openFileDialog1.ShowDialog() == DialogResult.OK)
            {

                if (openFileDialog1.FileName != "")
                {
                    FileStream fs = new FileStream(openFileDialog1.FileName, FileMode.Open);
                    byte[] by_temp;
                    by_temp = new byte[(int)fs.Length];
                    int int_readlength;
                    int_readlength = fs.Read(by_temp, 0, (int)fs.Length);
                    fs.Close();
                    
                 
                    string str = openFileDialog1.FileName;


                    string strTemp = null;
                    StreamReader reader = new StreamReader(str, System.Text.Encoding.Default);
                    string strLine = reader.ReadLine();

                    while (strLine != null)
                    {
                        strTemp += strLine;
                        strLine = reader.ReadLine();
                    }
                    richTextBox1.Text = strTemp;
                }
            }
        }
我这个程序中,用byte读取的数据不是十六进制数了,郁闷。而且连空格也读进去了。比如FB FD是两个十六进制数,它读进去的时候把F、B、空格、F、D分别存进数组了。本来是存进两个数组的。我不知道怎么修改这个程序,求大家指点 --------------------编程问答--------------------
引用 11 楼 hwenycocodq520 的回复:
Quote: 引用 10 楼 u011483174 的回复:

Quote: 引用 3 楼 hwenycocodq520 的回复:


//你可以从文件读
string txt = "74 00 FB FD FF FE 12 34 68 0A BC";
//根据空格分割字符串成字符串数组
string[] hexWords = txt.Split(' ');
//转换成16进制数存储在byte类型数组中
byte[] hex = new byte[hexWords.Length];
for (int i = 0; i < hexWords.Length; i++)
{
    hex[i] = Convert.ToByte(hexWords[i],16);
}
我是要从.txt文件中读取数据,不是这样指定几个数据


我注释那里不是说明了吗?//你可以从文件读,读文件操作上面的朋友已经给出了,至于指定路径你可以从OpenDialog对象中取得文件路径,这些你就慢慢写写吧,我给出思路而已
好的,我试试。谢啦 --------------------编程问答--------------------
引用 11 楼 hwenycocodq520 的回复:
Quote: 引用 10 楼 u011483174 的回复:

Quote: 引用 3 楼 hwenycocodq520 的回复:


//你可以从文件读
string txt = "74 00 FB FD FF FE 12 34 68 0A BC";
//根据空格分割字符串成字符串数组
string[] hexWords = txt.Split(' ');
//转换成16进制数存储在byte类型数组中
byte[] hex = new byte[hexWords.Length];
for (int i = 0; i < hexWords.Length; i++)
{
    hex[i] = Convert.ToByte(hexWords[i],16);
}
我是要从.txt文件中读取数据,不是这样指定几个数据


我注释那里不是说明了吗?//你可以从文件读,读文件操作上面的朋友已经给出了,至于指定路径你可以从OpenDialog对象中取得文件路径,这些你就慢慢写写吧,我给出思路而已


btnClick 打开文件对话框事件

OpenDialog dialog=new OpenDialog();
if(dialog.ShowDialog()==DialogResult.OK)
{
   using(StreamReader sr = new StreamReader(dialog.FileName))
   {
        string txt = sr.ReadToEnd();
        //根据空格分割字符串成字符串数组
        string[] hexWords = txt.Split(' ');
        //转换成16进制数存储在byte类型数组中
        byte[] hex = new byte[hexWords.Length];
        for (int i = 0; i < hexWords.Length; i++)
        {
            hex[i] = Convert.ToByte(hexWords[i],16);
        } 
   }
}
--------------------编程问答--------------------
引用 6 楼 caozhy 的回复:
byte[] result = "74 00 FB FD FF FE 12 34 68 0A BC".Split(' ').Select(x => (byte)Convert.ToInt32(x, 16)).ToArray();
这样只是指定几个数据,我是想从文件中读取大量数据 --------------------编程问答-------------------- 看看这个
http://msdn.microsoft.com/zh-cn/library/0a7fscd0(v=vs.80).aspx --------------------编程问答--------------------
引用 16 楼 danding_ge 的回复:
看看这个
http://msdn.microsoft.com/zh-cn/library/0a7fscd0(v=vs.80).aspx
这个一维数组的基本知识我以前看过,好像都要定长的。我从文件中读取数据是不定长的(就是不知道文件中有多少数据) --------------------编程问答--------------------
引用 17 楼 u011483174 的回复:
Quote: 引用 16 楼 danding_ge 的回复:

看看这个
http://msdn.microsoft.com/zh-cn/library/0a7fscd0(v=vs.80).aspx
这个一维数组的基本知识我以前看过,好像都要定长的。我从文件中读取数据是不定长的(就是不知道文件中有多少数据)


且看14楼
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,