请教DER(basic encoding rules)Delphi下实现问题。 Delphi下如何实现DER编码,谁知道? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 http://blog.csdn.net/lya_lya/archive/2004/08/13/73928.aspx基本编码规则?这个? 不是这个,是Basic Encoding Rules。我是想问,如何把一个整型转换为4位的BER编码。谁知道? 只找到了一个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); BMP图片点阵 在线等,16进制转换成10进制数字符串 【100分,会者不难】TreeView的一个小问题... 有这样的吗? 散分! 有感于机器太慢,发点牢骚!同道中人请跟贴 ***如何制作一个类似Object Inspector的窗口?一定给分!!!*** 经典搞笑 大家觉得李维演讲录音的质量能接受吗? delphi中结构体的定义问题. 求教一个问题? 这一句i语句有什么错误有什么问题 TatukGIS的问题,用过的来!
我是想问,如何把一个整型转换为4位的BER编码。谁知道?
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);