下面是我写的程序
private void SetText(string text)
if (this.txtData.InvokeRequired)
{
 SetTextCallback d = new SetTextCallback(SetText);
 this.Invoke(d, new object[] { text });
}
else
{
this.txtData.Text = text;
                
}
}
text就是我接收到的数据,为string类型。里面有8个字节数据,包含6个数字,一个小数点位,一个指示灯的数据。其中每个数据都是倒过来的,比如说本来仪器显示1234,可是接收到以后就成了4321了,我现在想把它改过来,在网上找了一个vb的源码
'------------------------------------------------read data-----------------------------------------------
   
   NumArray(1) = Chr(StringTemp(6))    '6个字节的数据位
   NumArray(2) = Chr(StringTemp(5))
   NumArray(3) = Chr(StringTemp(4))
   NumArray(4) = Chr(StringTemp(3))
   NumArray(5) = Chr(StringTemp(2))
   NumArray(6) = Chr(StringTemp(1))
   
   NumArray(0) = StringTemp(8)    '提取第9字节  数据的正负及小数点的位置
 
   LightStatus = StringTemp(7)     '提取第8字节  指示灯点亮状态
   
'-------------------------------------------------end---------------------------------------------------
   
'---------------------------------------------Judge  Dot-------------------------------------------------
   
   DotPosition = 8 - (NumArray(0) And &HF&)
   
'-------------------------------------------------end----------------------------------------------------   If DotPosition < 2 Or DotPosition > 7 Then
      Exit Sub
   End If'---------------------------------------------Judge Negative--------------------------
   
   If NumArray(0) > 127 Then
      NumArray(0) = "-"
   Else
      NumArray(0) = " "
   End If'-------------------------------------------------end----------------------------------------------------
For i% = 7 To DotPosition Step -1
      NumArray(i) = NumArray(i - 1)
   Next i
   NumArray(DotPosition) = "."
   
   iZero = 1
   While ZeroSwitch = False
      If NumArray(iZero) <> "0" Then
         ZeroSwitch = True
      Else
         If NumArray(iZero + 1) <> "." Then
            NumArray(iZero) = " "
            iZero = iZero + 1
         Else
            ZeroSwitch = True
         End If
      End If
   Wend
   
   Temp$ = NumArray(0) + NumArray(1) + NumArray(2) + NumArray(3) + NumArray(4) + NumArray(5) + NumArray(6) + NumArray(7)
   TextShow.Text = Temp
我看不大懂上面的意思,想请各位大侠帮帮我,最好能说得具体点,麻烦各位了

解决方案 »

  1.   

          
          NumArray(1)   =   Chr(StringTemp(6))         '6个字节的数据位 
          NumArray(2)   =   Chr(StringTemp(5)) 
          NumArray(3)   =   Chr(StringTemp(4)) 
          NumArray(4)   =   Chr(StringTemp(3)) 
          NumArray(5)   =   Chr(StringTemp(2)) 
          NumArray(6)   =   Chr(StringTemp(1)) 
          
          NumArray(0)   =   StringTemp(8)         '提取第9字节     数据的正负及小数点的位置 
      
          LightStatus   =   StringTemp(7)           '提取第8字节     指示灯点亮状态 
          
    前面一段就是把数据倒过来,先把接收到的数据转成数组,在逐一赋给另一数组同时把顺序倒置,下面就开始处理数据了。
      

  2.   

    能不能说的详细一些阿,我就是不知道具体怎么操作,转成char就不能写正负号了,应该转成什么格式呢。麻烦给为了,谢谢
      

  3.   

    接收的8个字节中不是有1个字节专门表示小数点和正负号吗。
          If   NumArray(0)   >   127   Then 
                NumArray(0)   =   "-" 
          Else 
                NumArray(0)   =   "   " 
          End   If 第1个字符(字符数组元素0)表示符号,是负数就给“-”,是正数就给空格。
      

  4.   

    谢谢了,还能在麻烦问一下,这个numarray应该用什么类型的数据,我用string类行不行呢。
      

  5.   

    using System;class Program
    {
        public static int LightStatus=0;
        static public string ProcessReadData(int[] StringTemp)
        {
            char[] NumArray = new char[8];
            //    ------------------------------------------------read   data----------------------------------------------- 
            //      NumArray(1)   =   Chr(StringTemp(6))         '6个字节的数据位 
            //      NumArray(2)   =   Chr(StringTemp(5)) 
            //      NumArray(3)   =   Chr(StringTemp(4)) 
            //      NumArray(4)   =   Chr(StringTemp(3)) 
            //      NumArray(5)   =   Chr(StringTemp(2)) 
            //      NumArray(6)   =   Chr(StringTemp(1)) 
            for (int i = 1; i < 7; i++)
                NumArray[7 - i] = (byte)StringTemp[i];
            //      NumArray(0)   =   StringTemp(8)         '提取第9字节     数据的正负及小数点的位置 
            //      LightStatus   =   StringTemp(7)           '提取第8字节     指示灯点亮状态 
            LightStatus = StringTemp[7];
            NumArray[0] = (byte)StringTemp[8];
            //'-------------------------------------------------end--------------------------------------------------- 
            //'---------------------------------------------Judge     Dot------------------------------------------------- 
            //      DotPosition   =   8   -   (NumArray(0)   And   &HF&) 
            int DotPosition = 8 - (NumArray[0] & 0x000f);
            //'-------------------------------------------------end---------------------------------------------------- 
            //      If   DotPosition   <   2   Or   DotPosition   >   7   Then 
            //            Exit   Sub 
            //      End   If 
            if (DotPosition < 2 || DotPosition > 7)
                return null;
            //'---------------------------------------------Judge   Negative-------------------------- 
            //      If   NumArray(0)   >   127   Then 
            //            NumArray(0)   =   "-" 
            //      Else 
            //            NumArray(0)   =   "   " 
            //      End   If 
            NumArray[0] = NumArray[0] > 127 ? "-" : " ";
            //'-------------------------------------------------end---------------------------------------------------- 
            //For   i%   =   7   To   DotPosition   Step   -1 
            //            NumArray(i)   =   NumArray(i   -   1) 
            //      Next   i 
            for (int i = 7; i > DotPosition; i--)
                NumArray[i] = NumArray[i - 1];
            //      NumArray(DotPosition)   =   "." 
            NumArray[DotPosition] = '.';
            //      iZero   =   1 
            int iZero = 1;
            bool ZeroSwitch = false;
            //      While   ZeroSwitch   =   False 
            while (!ZeroSwitch)
            {
                //            If   NumArray(iZero)   <>   "0"   Then 
                //                  ZeroSwitch   =   True 
                if (NumArray[iZero] != '0')
                    ZeroSwitch = true;
                //            Else 
                //                  If   NumArray(iZero   +   1)   <>   "."   Then 
                //                        NumArray(iZero)   =   "   " 
                //                        iZero   =   iZero   +   1 
                else if (NumArray[iZero + 1] != '.')
                    NumArray[iZero++] = ' ';
                //                  Else 
                //                        ZeroSwitch   =   True 
                else
                    ZeroSwitch = true;
                //                  End   If 
                //            End   If 
                //      Wend 
            }
            //      Temp$   =   NumArray(0)   +   NumArray(1)   +   NumArray(2)   +   NumArray(3)   +   NumArray(4)   +   NumArray(5)   +   NumArray(6)   +   NumArray(7) 
            //      TextShow.Text   =   Temp 
            return new string(NumArray);
        }    static void Main()
        {
        }
    }
    看了这段代码,不禁感叹当年放弃BASIC是对的。
      

  6.   

    谢了,太感激了,我也觉得c#的前途比较好,以后还请多多关照阿,谢le