栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何将64位整数转换为char数组并返回?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何将64位整数转换为char数组并返回?

这很简单,问题在于您正在移位char数组中的位,但是大小

a[i]
为4个字节(向上转换为
int
),因此您的移位超出了范围。尝试将其替换为您的代码:

int64_t charTo64bitNum(char a[]) {  int64_t n = 0;  n = (((int64_t)a[0] << 56) & 0xFF00000000000000U)    | (((int64_t)a[1] << 48) & 0x00FF000000000000U)    | (((int64_t)a[2] << 40) & 0x0000FF0000000000U)    | (((int64_t)a[3] << 32) & 0x000000FF00000000U)    | ((a[4] << 24) & 0x00000000FF000000U)    | ((a[5] << 16) & 0x0000000000FF0000U)    | ((a[6] <<  8) & 0x000000000000FF00U)    | (a[7]        & 0x00000000000000FFU);  return n;}

这样,您将

char
在转换之前将强制转换为64位数字,并且不会超出范围。您将获得正确的结果:

entity:Dev jack$ ./a.out aNum = 123456789bNum = 51544720029426255

附带说明一下,假设您不需要窥视char数组,我认为这也可以正常工作:

#include <string.h>void int64ToChar(char a[], int64_t n) {  memcpy(a, &n, 8);}int64_t charTo64bitNum(char a[]) {  int64_t n = 0;  memcpy(&n, a, 8);  return n;}


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/405853.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号