回顾一下大数的定义

typedef uint64_t gm_bn_t[8];
1

数组索引从低到高分别存放的大数的低到高位,那么比较的时候应该是从高位索引开始,具体实现如下:

int gm_bn_cmp(const gm_bn_t a, const gm_bn_t b) {
    int i;
    for (i = 7; i >= 0; i--) {
        if (a[i] > b[i])
            return 1;
        if (a[i] < b[i])
            return -1;
    }
    return 0;
}
1
2
3
4
5
6
7
8
9
10

当a等于b时返回0

当a大于b时返回1

当a小于b时返回-1