第一句:x[len >> 5] |= 0x80 << ((len) % 32);   第二句:x[(((len + 64) >>> 9) << 4) + 14] = len;  上面这两句是什么意思呢?如果能转换成vb语句就更好了,谢谢。

解决方案 »

  1.   

    楼主看懂这个需要了解位左右移操作。推荐文章,小弟写的。
    http://blog.csdn.net/lihan6415151528/archive/2009/02/23/3924273.aspx
      

  2.   

    位移和位或运算参见JScript手册:按位“或”赋值运算符 (|=)
    请参阅
    | 运算符 | 运算符优先级 | 运算符总结
    要求
    版本 1
    对变量值与表达式值执行按位“或”,并将结果赋给该变量。result |= expression
    参数
    result 
    任何变量。 
    expression 
    任何表达式。 
    说明
    使用该运算符和使用下面的语句是等效的: result = result | expression
    |= 运算符查看 result 和 expression 的二进制表示法的值,并执行按位“或”操作。该操作的结果如下所示: 0101    (result)
    1100    (expression)
    ----
    1101    (输出)
    任何时候,只要两个表达式中的其中一个的某位是 1,则结果的该位是 1。否则,结果的该位是 0。
    按位右移运算符 (>>)
    请参阅
    << 运算符 | >>= 运算符 | >>> 运算符 | 运算符优先级 | 运算符总结
    要求
    版本 1
    右移表达式的位,保持符号不变。result = expression1 >> expression2
    参数
    result 
    任何变量。 
    expression1 
    任何表达式。 
    expression2 
    任何表达式。 
    说明
    >> 运算符把 expression1 的所有位向右移 expression2 指定的位数。expression1 的符号位被用来填充右移后左边空出来的位。向右移出的位被丢弃。例如,下面的代码被求值后,temp 的值是 -4:-14 (即二进制的 11110010)右移两位等于 -4 (即二进制的 11111100)。var temp
    temp = -14 >> 2按位左移运算符 (<<)
    请参阅
    <<= 运算符 | >> 运算符 | >>> 运算符 | 运算符优先级 | 运算符总结
    要求
    版本 1
    左移表达式的位。result = expression1 << expression2
    参数
    result 
    任何变量。 
    expression1 
    任何表达式。 
    expression2 
    任何表达式。 
    说明
    << 运算符把 expression1 的所有位向左移 expression2 指定的位数。例如: var temp
    temp = 14 << 2
    变量 temp 的值为 56,因为 14 (即二进制的 00001110)向左移两位等于 56 (即二进制的 00111000)。
    javascript中左右位移运算的一些示例:http://www.jslab.org.cn/?tag=displacement
      

  3.   

    我查到了关于左移和右移的vb解读为:
    左移n位 = num * 2^n
    右移n位 = num \ 2^n那么,请问,>>> 无符号右移 用vb怎么解读?