繁体   English   中英

将Biginteger转换为Bytearray(原始数据)

[英]converting Biginteger to Bytearray(Raw data)

我已经使用以下代码将十进制的bigint转换为字节数组(原始数据),但是结果却是错误的。

这是什么错误?

我正在Apple Mac(用于iPhone应用程序)中尝试此操作,COMP_BYTE_SIZE为4

是否有任何bigendian / little endian问题,请帮助。

void bi_export(BI_CTX *ctx, bigint *x, uint8_t *data, int size)
{
    int i, j, k = size-1;

    check(x);
    memset(data, 0, size);  /* ensure all leading 0's are cleared */

    for (i = 0; i < x->size; i++)
    {
        for (j = 0; j < COMP_BYTE_SIZE; j++)
        {
            comp mask = 0xff << (j*8);
            int num = (x->comps[i] & mask) >> (j*8);
            data[k--] = num;

            if (k < 0)
            {
                break;
            }
        }
    }

谢谢。

参数大小至少为x-> size * 4,即。 目标数组足够大吗? 也使用

comp mask = (comp)0xff << (j*8);

num应该在复制之前uint8_tuint8_t

data[k--] = (uint8_t)num; 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM