c++ 如何通过int i = 0; 得到char a[] = {0x00, 0x00, 0x00, 0x00};

如何通过a,得到doubled?另外,如何把{0x01}和{0x00,0x00,0x00,0x00}连接起来?... 如何通过a,得到double d?
另外,如何把 {0x01}和
{0x00, 0x00, 0x00, 0x00}
连接起来?
展开
 我来答
jackwind1987
2013-12-25 · TA获得超过2738个赞
知道大有可为答主
回答量:1268
采纳率:50%
帮助的人:491万
展开全部
#include <stdio.h>

int main() {
    int a;
    scanf("%d", &a);
    char *p = (char*)&a;
    for (int i = 0; i < 4; i++)
        printf("0x%x\n", p[i]);
    return 0;
}

原理就是把指针的类型转换一下,然后取值。double同理,不过double的sizeof是8,需要char数组是8个。

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ymyhgzs
2013-12-25 · TA获得超过299个赞
知道小有建树答主
回答量:731
采纳率:0%
帮助的人:271万
展开全部
用联合体
typedef union UU32{
uint32 Val;
int32 i32;
uint16 Val16s[2];
byte bytes[4];
char chars[4];
}UU32;
若CPU是小端模式,使用demo如下:
定义: UU32 i;
赋值:i.Val = 0x11223344;
那么
i.bytes[0] = 0x11;
i.bytes[1] = 0x22;
i.bytes[2] = 0x33;
i.bytes[3] = 0x44;
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
柴丽军
2013-12-25
知道答主
回答量:30
采纳率:0%
帮助的人:11.5万
展开全部
char a[4];
int i = 0;
char c = (char)i;
for(int j = 0;j < 4;j++)
{
a[j] = c;
}
追问
如果i的值比较大呢?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Soul丶hacher
2017-09-06
知道答主
回答量:1
采纳率:0%
帮助的人:958
展开全部
 1 #include <stdio.h>
  2 
  3 typedef struct ccc_
  4 {
  5  unsigned int a:2;
  6 }cc;
  7 
  8 void main(void)
  9 {
 10    int b[4];
 11    cc i;
 12    i.a=0;
 13    int y=0;
 14    for(y;y<4;y++)
 15    {
 16       b[y]=i.a;
 17     }
 18     
 19
 20    return;
 21 
 22 }
 
 //b[0]=0x00
 //b[1]=0x00
 //b[2]=0x00
 //b[3]=0x00
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式