Delphi下如何实现DER编码,谁知道?

解决方案 »

  1.   

    http://blog.csdn.net/lya_lya/archive/2004/08/13/73928.aspx基本编码规则?这个?
      

  2.   

    不是这个,是Basic Encoding Rules。
    我是想问,如何把一个整型转换为4位的BER编码。谁知道?
      

  3.   

    只找到了一个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);