我是获取的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[2]; byte[] retByte = new byte[strArray.Length]; int intTemp; string c; for (int i = 0; i < strArray.Length; i ) { intTemp = Convert.ToInt32(strArray[i], 16); if (intTemp > 122) { byteArray = new byte[2] { (byte) intTemp, (byte) Convert.ToInt32(strArray[i 1], 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[bytes.Length * 2];
for (int i = 0; i < bytes.Length; i++)
{
int b = bytes[i];
chars[i * 2] = hexDigits[b >> 4];
chars[i * 2 + 1] = hexDigits[b & 0xF];
}
return new string(chars);
}
分类
---------------------
作者:fs20041242
来源:CSDN
原文:https://blog.csdn.net/fs20041242/article/details/83841998
版权声明:本文为博主原创文章,转载请附上博文链接!

SMI信息管理结构中定义了12种数据类型,一般MIB中常见的有INTERGER、DisplayString、OCTET STRING、OBJECT IDENTIFIER等几种。其中OCTET STRING为0或多个8 bit字节,每个字节值在0~255之间;DisplayString为0或多个8bit字节,但是每个字节必须是ASCII码,在MIB-II中,所有该类型的变量不能超过255个字符(0个字符是可以的)。
除了字符范围不一样之外,DisplayString和OCTET STRING这两种类型并没有什么差别,在net-snmp中,它们都是用的ASN_OCTET_STR类型返回。但是在值的显示上,它们是有区别的。前者按一般的字符串形式显示,如commonNEVendorInfo.0:-->Linux。后者按照十六进制字节流显示(每个字节间以空格分隔),如commonPhysAddress.0:-->00 23 b8 00 00 7b。
我们先看一下trap的格式(man snmptrap):

本文关注的是“[OID TYPE VALUE]...”的变量绑定部分,TYPE的定义如下:

一般trap中绑定的变量都是int或string类型,发送绑定这两种类型的变量的trap如下:
snmptrap -v 1 -c public 192.168.42.115 .1.3.6.1.4.1.17409.1.6 192.168.42.145 6 1 12345 OID i 12 OID s hello;
OCTET STRING类型的OID的值处理要特殊一点,要先将字符串格式化为16进制的字节流,伪代码如下:
char oct_str[SIZE];
char str[] = "hello";
snprintf(oct_str, SIZE, "%02x%02x....", str[0], str[1],...);

作者:wuchuan53
来源:CSDN
原文:https://blog.csdn.net/wuchuanlove53/article/details/18214713
版权声明:本文为博主原创文章,转载请附上博文链接!

关于snmp octet string和普通string问题的更多相关文章

  1. 用java String类的getBytes(String charsetName)和String(byte[] bytes, String charsetName)解决乱码问题

    Java中String的数据是如何存储的,查看源代码就可以知道,String的数据是存储在char[] value这样一个成员变量中的,char类型的大小在java中是2个字节 我们还知道,现在普遍使 ...

  2. string.IsNullOrEmpty和string.IsNullOrWhiteSpace方法的区别

    string.IsNullOrEmpty 都知道,这个功能是判断字符串是否为:null或者string.Empty.如果是如"\t"这样的字符就返回false了,为了达到判断过滤这 ...

  3. 关于String str =new String("abc")和 String str = "abc"的比较

    String是一个非常常用的类,应该深入的去了解String 如: String str =new String("abc") String str1 = "abc&qu ...

  4. Javascript中String()与new String()的差异

    这里主要关注的是值类型和引用类型. 我们知道在javascript中的变量在内存中的存储有两种形式,值类型存储和引用类型存储. 通常可以进行值存储的包括  字符串类型,布尔值类型,数字类型,他们都包含 ...

  5. C#、.Net代码精简优化(空操作符(??)、as、string.IsNullOrEmpty() 、 string.IsNullOrWhiteSpace()、string.Equals()、System.IO.Path 的用法)

    一.空操作符(??)在程序中经常会遇到对字符串或是对象判断null的操作,如果为null则给空值或是一个指定的值.通常我们会这样来处理: .string name = value; if (name ...

  6. 经典String str = new String("abc")内存分配问题

    出自:http://blog.csdn.net/ycwload/article/details/2650059 今天要找和存储管理相关的一些知识,网上搜了半天也没有找到完善的(30%的程度都不到),没 ...

  7. 字符串中判断存在的几种模式和效率(string.contains、string.IndexOf、Regex.Match)

    通常情况下,我们判断一个字符串中是否存在某值常常会用string.contains,其实判断一个字符串中存在某值的方法有很多种,最常用的就是前述所说的string.contains,相对来说比较常用的 ...

  8. C# string.format、string.connect和+=运算 效率计算

    using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Stri ...

  9. 如何将List<string>转化为string

    Convert List, string. A List can be converted to a string. This is possible with the ToArray method ...

  10. 1,字符是否为空,2,比较两个字符大小。String.Compare(String, String)。string.IsNullOrEmpty(string)

    1, String.Compare 方法 (String, String) 比较两个指定的 String 对象. 值 条件 小于零 strA 小于 strB. 零 strA 等于 strB. 大于零 ...

随机推荐

  1. GZIP压缩与解压

    public class GZIP { /** * 字符串的压缩 * * @param str * 待压缩的字符串 * @return 返回压缩后的字符串 * @throws IOException ...

  2. java笔记----property文件读写

    package com.test.property; import java.io.BufferedInputStream; import java.io.File; import java.io.F ...

  3. 分享两个细致、全面讲解Vue和React源码的链接

    Vue: 1.http://hcysun.me/vue-design/ 2.https://ustbhuangyi.github.io/vue-analysis/(带视频,但收费) React: 3. ...

  4. 用golang写了个统计各单位报送的信息数量的微服务

    代码很乱,bug很多,将就着看吧.参考了很多网上代码,只能说声感谢了. //cjl.ZongHeInfo.1.0 //目的:对各部门报上来的信息数量进行排名 //思路:预计一年信息量不超过100M,全 ...

  5. ASP.NET MVC 下自定义模型绑定,去除字符串类型前后的空格

    直接贴代码了: SkyModelBinder.cs using System.ComponentModel; using System.Linq; using System.Web.Mvc; name ...

  6. OneHotEncoder独热编码和 LabelEncoder标签编码

    学习sklearn和kagggle时遇到的问题,什么是独热编码?为什么要用独热编码?什么情况下可以用独热编码?以及和其他几种编码方式的区别. 首先了解机器学习中的特征类别:连续型特征和离散型特征 拿到 ...

  7. 基于nodejs的流水线式的CRUD服务。依赖注入可以支持插件。

    写代码好多年了,发现大家的思路都是写代码.写代码.写代码,还弄了个称号——码农. 我是挺无语的,我的思路是——不写代码.不写代码.不写代码! 无聊的代码为啥要重复写呢?甚至一写写好几年. 举个例子吧, ...

  8. 使用redis可能出现的问题

    1)缓存与数据库双写不一致 2)缓存雪崩 3)缓存穿透 由于缓存中不存在某个key,所有的请求都会落到数据库上,会对数据库造成很大压力,甚至崩溃 一个简单的方案是将不存在的数据也缓存起来(value值 ...

  9. Android 开发之Windows环境下Android Studio安装和使用教程

    JDK环境配置: http://www.cnblogs.com/liuhongfeng/archive/2015/12/30/5084896.html Android Studio下载地址:http: ...

  10. Windows Server 2008 R2提示api-ms-win-crt-runtime-l1-1-0.dll 丢失解决方法

    在一台服务器的全新windows Server 2008 R2 服务器上配置php运行环境, 在启动Apache之后,显示下图错误: 解决方法: 1.安装VC redit.exe程序解决 是VC的一个 ...