gpt4 book ai didi

c - 如何将 64 位 int 转换为二进制表示?

转载 作者:太空狗 更新时间:2023-10-29 15:30:27 26 4
gpt4 key购买 nike

如何将 64 位 int 转换为二进制表示(big endian)?对于反向任务,我使用这些函数:

int readInt (struct str *buf) {
buf -> cur_len = buf -> cur_len + 4;
return
(((buf -> data[buf -> cur_len - 3 ] & 0xff) << 24) |
((buf -> data[buf -> cur_len - 2 ] & 0xff) << 16) |
((buf -> data[buf -> cur_len - 1 ] & 0xff) << 8) |
((buf -> data[buf -> cur_len ] & 0xff) << 0));
};


long unsigned int 32Bit(struct str *buf) { // 32
return ((long unsigned int)readInt(buf)) & 0xffffffffL;
};

long unsigned int 64Bit(struct str *buffer) { //64
long unsigned int result = 32Bit(buf);
result *= 4294967296.0;
return result;
}

最佳答案

将一个 64 位无符号数序列化为一个 unsigned char 数组,以大端顺序在每个数组中存储 8 位,可以像这样完成:

void serialise_64bit(unsigned char dest[8], unsigned long long n)
{
dest[0] = (n >> 56) & 0xff;
dest[1] = (n >> 48) & 0xff;
dest[2] = (n >> 40) & 0xff;
dest[3] = (n >> 32) & 0xff;
dest[4] = (n >> 24) & 0xff;
dest[5] = (n >> 16) & 0xff;
dest[6] = (n >> 8) & 0xff;
dest[7] = (n >> 0) & 0xff;
}

关于c - 如何将 64 位 int 转换为二进制表示?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7099711/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com