惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

F
Fortinet All Blogs
爱范儿
爱范儿
P
Proofpoint News Feed
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
T
Tailwind CSS Blog
J
Java Code Geeks
宝玉的分享
宝玉的分享
Jina AI
Jina AI
B
Blog
N
Netflix TechBlog - Medium
Recent Announcements
Recent Announcements
aimingoo的专栏
aimingoo的专栏
腾讯CDC
C
Check Point Blog
The Cloudflare Blog
阮一峰的网络日志
阮一峰的网络日志
博客园 - Franky
罗磊的独立博客
B
Blog RSS Feed
WordPress大学
WordPress大学
小众软件
小众软件
博客园 - 叶小钗
M
MIT News - Artificial intelligence
GbyAI
GbyAI

博客园 - zealsoft

洛谷 P1816 忠诚题解 洛谷 P2384 最短路题解 洛谷 P2725 邮票题解 洛谷 P2722 总分题解 洛谷 P1219 八皇后题解 洛谷 P2921 在农场万圣节Trick or Treat on the Farm题解 洛谷 P1162 填涂颜色题解 洛谷 P1330 封锁阳光大学题解 洛谷 P1032 字串变换题解 洛谷 P1443 马的遍历题解 洛谷 P1280 尼克的任务题解 洛谷 P1020导弹拦截题解 洛谷 P1141 01迷宫题解 VisualSVNServer无法卸载也无法安装,报告不是有效的MOF文件(0x8004401e)错误 视频捕捉的格式问题 一个VxWorks源代码网站 找个轻量级的Log库还挺难 W32.Downadup.autorun病毒的清除 如何用Visual Studio 2005编译Wireshark的插件
TAU G2中的BitString和OctetString
zealsoft · 2009-10-03 · via 博客园 - zealsoft

TAU G2中比一般的UML工具多了一些预定义的类,如BitString和OctetString。这些类是和ASN.1所对应的,主要为了方便处理PDU编码,这是针对通信协议软件开发设计的。一般我们喜欢使用BitString类,因为它更方便和直观。不过最近遇到一个小问题,就是如果使用BitString类,在处理比较长的PDU串时,有时无法传递到环境函数中。为了解决这个问题,一个解决办法就是采用OctetString类。

BitString类在内存中用一个字节存储一个比特位,而OctetString类使用一个字节存储8个比特位,从这点可以看出OctetString更节省内存,所以在和环境函数的通信中更为有利,所以在环境函数的信号参数定义中推荐使用OctetString

在TAU G2中,要实现BitString和OctetString之间的转换也是非常容易的。

BitString b, p;
OctetString s;

= '010'b;
= OctetString(b); // 将BitString转换为OctetString
= s.BitString(s); // 将OctetString转换为BitString

在将BitString转换为OctetString时,如果BitString的长度不是8的倍数,TAU G2会在BitString后面补零。对于上面的例子,s将为'01000000'b。

在TAU G2生成的C代码中,BitString和OctetString实际上是一个东西,所以使用OctetString代替BitString之后,环境函数中的绝大多数代码不需要修改,只是要注意OctetString的Bits数组中的每个元素不再是0和1,而是0到255之间的一个数了。