请教DER(basic encoding rules)Delphi下实现问题。

zxblue 2009-12-03 05:14:28
Delphi下如何实现DER编码,谁知道?
...全文
72 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
gyk120 2009-12-04
  • 打赏
  • 举报
回复
只找到了一个C的算法……
int ber_get_int(char *ber, long num)
{
int i, sign, taglen;
int len, lenlen;
long netnum, mask;

sign = (num < 0);//如果num小于0,sign=1,否则 sign=0;
for ( i = sizeof(long) - 1; i > 0; i-- ) {
mask = (0xffL << (i * 8));
if ( sign ) {
if ( (num & mask) != mask ) break;
} else {
if ( num & mask ) break;
}
}

mask = (num & (0x80L << (i * 8)));
if ( (mask && !sign) || (sign && !mask) ) i++;
len = i + 1;
i++;
netnum = htonl( num );
//到此为止i == 编码后的字节数
//(char *)&netnum + (sizeof(long) - i)为开始的第一个字节。
memcpy(ber,(char *)&netnum + (sizeof(long) - i),i);
return i;
}

-----------------------------------------
调用的方式:
char buf[32];//返回结果
long nLen;//返回的长度
int i;
i = 65535;//你需要计算的数
nlen = ber_get_int(buf,i);
zxblue 2009-12-03
  • 打赏
  • 举报
回复
不是这个,是Basic Encoding Rules。
我是想问,如何把一个整型转换为4位的BER编码。

谁知道?
gyk120 2009-12-03
  • 打赏
  • 举报
回复

1,593

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 网络通信/分布式开发
社区管理员
  • 网络通信/分布式开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧