fs20041242 发表于 2013-1-19 04:07:37

Octet String

我是获取的Octet String用String输出,输出的是一连串的2个16进制数 空格。;然后想对输出结果操作,得到我想要的值。
解决方案:private static string exchange(string input) {      int number = (input.Length 1) / 3;      string strReturn = "";      string[] strArray = input.Split(' ');      byte[] byteArray = new byte;      byte[] retByte = new byte;      int intTemp;      string c;      for (int i = 0; i < strArray.Length; i ) {            intTemp = Convert.ToInt32(strArray, 16);            if (intTemp > 122) {                byteArray = new byte { (byte) intTemp,                        (byte) Convert.ToInt32(strArray, 16) };                c = System.Text.Encoding.Default.GetString(byteArray);                i ;            } else                c = Convert.ToChar(intTemp).ToString();            strReturn = strReturn c;      }      return strReturn;    }


octet   string是字节串,即用十六进制串表示字节序列。如真正的字节序列是   1   2   3   4,用字节串则表示为31   32   33   34,具体的转换方法为:
1、先看字节串有多长,因为一个字节要用到三个字符(两位数符加一个空格,如果有空格的话),然后将之除以3,得到字节的数目,然后由此申请空间,用GetMem或动态数组 SetLength均可;
2、取出每两个字符,用HexToBin转换为一个字节放到结果中;
3、跳过空格;
4、重复2、3直至串结束。

注意,看看你的实际的octet   string中有没有空格,如果没有,则上面做相应调整。



0xFF:FD:FF:0F:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00
这个数据是用工具取出来的?
如果是mib leaf的类型是PortList,那么根据PortList的定义,端口1~14,16~24,29~32在这个Vlan下。

字节顺序是指占内存多于一个字节类型的数据在内存中的存放顺序,有小端、大端两种字节顺序。小端字节序指低字节数据存放在内存低地址处,高字节数据存放在内存高地址处;大端字节序是高字节数据存放在低地址处,低字节数据存放在高地址处。不同的CPU有不同的字节序类型,基于X86平台的PC机是小端字节序的;而网络字节序就是大端字节序。

Byte[]转十六进制
// 字节转十六进制
private static char[] hexDigits = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F' };
internal static string ToHexString(byte[] bytes)
{
            char[] chars = new char;
            for (int i = 0; i < bytes.Length; i++)
            {
                int b = bytes;
                chars = hexDigits;
                chars = hexDigits;
            }
            return new string(chars);
   }
分类
页: [1]
查看完整版本: Octet String