百度百科的 ASN.1 http://baike.baidu.com/view/26378.htm

什么是 octet string 结构化字节

怎么解析,这里有微软的解析方法

If the byte array contains fewer than 128 bytes, the Length field of the TLV triplet requires only one byte to specify the content length. If it is more than 127 bytes, bit 7 of the Length field is set to 1 and bits 6 through 0 specify the number of additional bytes used to identify the content length. This is shown in the following example where the high order bit of the second byte on the first line is set to 1 and the byte indicates that there is a trailing Length byte. The third byte therefore specifies that the content is 0x80 bytes long.

以上就是解析,字节是代表什么意思

例如

当字符串字节数小于128的时候:

04 0a                              ; OCTET_STRING (a Bytes)
|     1e 08 00 55 00 73 00 65  00 72  ;   ...U.s.e.r

解析

04 代表 OCTET_STRING 这个结构(参看基本类型汇总表)

0a 代表 字节的数量(a Bytes)

当字符串字节数大于127的时候:

04 81 80                       ; OCTET_STRING (80 Bytes)

解析

04 仍然是 代表 OCTET_STRING 这个结构

81 代表 后面的计数有多少字节 0x81-0x80 = 0x01 这就代表1个字节(注意:这里的0x80不是上面字节串内的80,是字符串字节数大于127的时候,128计算出来的80)

所以后面的1个字节  80 就是字节长度了。

例如:

04 82 03 aa        ; OCTET_STRING (3aa Bytes)

04 代表 OCTET_STRING 这个结构

82 代表 后面的计数有多少字节 0x82-0x80 = 0x02 这就代表2个字节

所以后面跟着的两个字节组合 就是字符串长度 03aa 代表 938个字节

下面是解析代码:

std::string OctetToString(const char * src_in,int size)
{
if(src_in[] == 0x04)
{
if((int)src_in[] <)
{
return string(src_in+,src_in[]);
}
else
{
int count_len = (int)src_in[]-0x80;
int content_len = ;
for(int i = ;i<count_len;i++)
{
count_len =count_len<<+ (int)src_in[+i];
} return (content_len > size? "":string(src_in+,content_len));
}
}
return "";
}

基本类型汇总表

类型

UNIVERSALTag

取值

BOOLEAN

1

TRUE,FALSE

NULL

5

NULL

INTEGER

2

整数

ENUMERATED

10

类型定义中列出的成员

REAL

9

实数

BIT STRING

3

比特串

OCTET STRING

4

八位组串,字节流

OBJECTIDENTIFIER

6

RELATIVE-OID

13

解释:位串:{1,0,0,0,1,1,1,0,1,0,0,1},第一字节10001110=0x8E;第二字节:1001需填充,填充后得到10010000=0x90,因为填充了4个0,得到表示填充数的一个字节0x04

则完整编码为:0x03               03                                               04              8E   90

BIT STRING结构  数据长度 (2字节数据+1字节填充个数)     填充个数字节           数据

Octet string 解析的更多相关文章

  1. 关于snmp octet string和普通string问题

    我是获取的Octet String用String输出,输出的是一连串的2个16进制数 空格.:然后想对输出结果操作,得到我想要的值. 解决方案:private static string exchan ...

  2. IntelliJ IDEA 通过GsonFormat插件将JSONObject格式的String 解析成实体

    GsonFormat插件主要用于使用Gson库将JSONObject格式的String 解析成实体,该插件可以加快开发进度,使用非常方便,效率高. 插件地址:https://plugins.jetbr ...

  3. GsonFormat插件主要用于使用Gson库将JSONObject格式的String 解析成实体,该插件可以加快开发进度,使用非常方便,效率高。

    GsonFormat插件主要用于使用Gson库将JSONObject格式的String 解析成实体,该插件可以加快开发进度,使用非常方便,效率高. 插件地址:https://plugins.jetbr ...

  4. IDEAL葵花宝典:java代码开发规范插件:GsonFormat插件将JSONObject格式的String 解析成实体

    前言: GsonFormat插件主要用于使用Gson库将JSONObject格式的String 解析成实体,该插件可以加快开发进度,使用非常方便,效率高. 这个教程主要是学习IntelliJ IDEA ...

  5. E. Median String 解析(思維、大數運算)

    Codeforce 1144 E. Median String 解析(思維.大數運算) 今天我們來看看CF1144E 題目連結 題目 給你兩個長度為\(k\)的字串\(s\)和\(t\),求字典序排序 ...

  6. String解析

    常量池(Constant Pool):指的是在编译期被确定,并被保存在已编译的.class文件中的一些数据.JVM虚拟机为每个被装载的类型维护一个常量池.常量池就是该类型所用到常量的一个有序集和,包括 ...

  7. HDU 4668 Finding string (解析字符串 + KMP)

    转载请注明出处,谢谢http://blog.csdn.net/ACM_cxlove?viewmode=contents    by---cxlove 题意:给出一个压缩后的串,以及一个模式串,问模式串 ...

  8. c++ string 解析ip

    比如输入是192.168.80.12-15,解析成192.168.80.12.192.168.80.13.192.168.80.14.192.168.80.15. #include <iostr ...

  9. 类string解析

    原创作品,转载请注明来源:http://www.cnblogs.com/shrimp-can/p/5645248.html 在涉及字符串的时候,我们可以定义字符数组或指针,其实还有一个类,专门是为字符 ...

随机推荐

  1. ios 异步多线程 获取数据

    简介 iOS有三种多线程编程的技术,分别是: (一)NSThread  (二)Cocoa NSOperation (三)GCD(全称:Grand Central Dispatch)   这三种编程方式 ...

  2. C#总结(3)

    这次我们来谈谈函数. C#的函数分为静态函数,和普通函数. 先上代码. using System; using System.Collections.Generic; using System.Lin ...

  3. Unity轻量级依赖注入容器

    一.前言 Unity是一个轻量级的可扩展的依赖注入容器,支持构造函数,属性和方法调用注入.在Nuget里安装unity

  4. setInterval && setTimeout || 定时器

    来自w3school的解释 定时器setInterval() 方法可按照指定的周期(以毫秒计)来调用函数或计算表达式. setInterval() 方法会不停地调用函数,直到 clearInterva ...

  5. 24c16读写驱动程序

    //////////////////////////////////////////////////////////////// //24c16读写驱动程序 // //模块调用: //读数据:read ...

  6. Silverlight 结合ArcGis 在地图画面上显示名称+ 点选图层事件委派

    原文 http://www.dotblogs.com.tw/justforgood/archive/2012/05/10/72083.aspx 如下图,我希望我的滑鼠经过此标记的点时显示名称 其实简单 ...

  7. css案例学习之按钮超链接

    效果 css实现 <html> <head> <title>按钮超链接</title> <style> a{ /* 统一设置所有样式 */ ...

  8. Combinations 解答

    Question Given two integers n and k, return all possible combinations of k numbers out of 1 ... n. F ...

  9. Dos命令---ipconfig

    Dos命令---ipconfig 作者:vpoet mail:vpoet_sir@163.com ipconfig是很常用的Dos命令,我们可以用ipconfig /?查看该命令的说明.在linux下 ...

  10. 电子科大POJ "统计单词"

    统计单词 Time Limit: 3000/1000MS (Java/Others)     Memory Limit: 65535/65535KB (Java/Others) C-sources: ...