javascript和易语言取GetCrc32

以下代码亲测有效。用于QQ互联开发中,将QQ的openId转换成长整数型数据(十进制);

js版本:

function GetCrc32(Instr) {
    if (typeof window.Crc32Table != "undefined") return;
    window.Crc32Table = new Array(256);
    var i, j;
    var Crc;
    for (i = 0; i < 256; i++) {
        Crc = i;
        for (j = 0; j < 8; j++) {
            if (Crc & 1) Crc = Crc >> 1 & 2147483647 ^ 3988292384; else Crc = Crc >> 1 & 2147483647;
        }
        Crc32Table[i] = Crc;
    }
    if (typeof Instr != "string") Instr = "" + Instr;
    Crc = 4294967295;
    for (i = 0; i < Instr.length; i++) Crc = Crc >> 8 & 16777215 ^ Crc32Table[Crc & 255 ^ Instr.charCodeAt(i)];
    Crc ^= 4294967295;
    return Crc;
};

易语言版本:

.版本 2

.DLL命令 RtlComputeCrc32, 整数型, "ntdll.dll", , 公开, 计算一个字节块的CRC32校验和
    .参数 dwInitial, 整数型, , Initial CRC value,0,码表
    .参数 pData, 文本型, , Data block
    .参数 iLen, 整数型, , Length of the byte block,文本长度



.版本 2

.子程序 进制_十六到十, 长整数型, 公开, 将16进制文件转换到10进制数值(返回十进制数)
.参数 文本, 文本型
.局部变量 i, 整数型
.局部变量 t, 文本型
.局部变量 结果, 长整数型
.局部变量 局_文本, 文本型

t = “0123456789ABCDEF”
局_文本 = 到大写 (文本)
.计次循环首 (取文本长度 (文本), i)
    结果 = 结果 × 16 + 寻找文本 (t, 取文本中间 (局_文本, i, 1), , 假) - 1
.计次循环尾 ()
返回 (结果)

易语言调用方法:

.版本 2

.局部变量 qqId, 长整数型, , , openId转换的crc32数据

qqId = 进制_十六到十 (取十六进制文本 (RtlComputeCrc32 (0, openId, 取文本长度 (openId))))
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值