byte[] buffer = new byte[1024];
            string tag1,VR1,length1,value1;
            StreamReader reader = new StreamReader(textBox_path.Text);
            reader.BaseStream.Read(buffer, 0, 128);
            reader.BaseStream.Read(buffer, 0, 4);
            if (Encoding.Default.GetString(buffer, 0, 4) == "DICM")
            {
                reader.BaseStream.Read(buffer, 0, 4);
                int temp = buffer[0] + (buffer[1] << 8);
                int temp1 = buffer[2] + (buffer[3] << 8);
                tag1 = temp.ToString("0000") +","+ temp1.ToString("0000");
             
                reader.BaseStream.Read(buffer, 0, 2);
                VR1 = Encoding.Default.GetString(buffer ,0,2);
      
                reader.BaseStream.Read(buffer, 0, 2);
                int len = buffer[0] + (buffer[1] << 8);
                length1 = len.ToString();
              
                reader.BaseStream.Read(buffer, 0, len);
                int temp3 = 0;
                for (int i = 0; i < len; i++)
                {
                    temp3 += buffer[i] << (i * 8);
                }
                value1 = temp3.ToString();                          
                this.textBox1.Text = tag1 + " " + VR1 + " " + length1 + " " + value1+"\r\n";        如果照这样的方法解析,可以把它简单化或者写个函数调用么?该怎么写呢?

解决方案 »

  1.   

    wuyq11 我不太明白 你能举个例子么?谢谢了
      

  2.   

    LZ的意思不怎么明白,参数可以按照二楼说的,可以返回一个string数组还是?...
      

  3.   

    //  定义函数
     public string FGetString(string ss)
    {
      byte[] buffer = new byte[1024];
      string tag1,VR1,length1,value1;
      StreamReader reader = new StreamReader(s);
      reader.BaseStream.Read(buffer, 0, 128);
      reader.BaseStream.Read(buffer, 0, 4);
      if (Encoding.Default.GetString(buffer, 0, 4) == "DICM")
      {
      reader.BaseStream.Read(buffer, 0, 4);
      int temp = buffer[0] + (buffer[1] << 8);
      int temp1 = buffer[2] + (buffer[3] << 8);
      tag1 = temp.ToString("0000") +","+ temp1.ToString("0000");
        
      reader.BaseStream.Read(buffer, 0, 2);
      VR1 = Encoding.Default.GetString(buffer ,0,2);
        
      reader.BaseStream.Read(buffer, 0, 2);
      int len = buffer[0] + (buffer[1] << 8);
      length1 = len.ToString();
        
      reader.BaseStream.Read(buffer, 0, len);
      int temp3 = 0;
      for (int i = 0; i < len; i++)
      {
      temp3 += buffer[i] << (i * 8);
      }
      value1 = temp3.ToString();
      retrun tag1 + " " + VR1 + " " + length1 + " " + value1+"\r\n";}
    //调用函数
          this.textBox1.Text = FGetString(textBox_path.Text.temp3.ToString());
      

  4.   

    错误 1 “string”不包含“temp3”的定义,并且找不到可接受类型为“string”的第一个参数的扩展方法“temp3”(是否缺少 using 指令或程序集引用?) C:\Users\Administrator\Desktop\dicom解析\dicom解析\Form1.cs 56 68 dicom解析
     出现错误了啊~~~求解~~~~~~