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}
连接起来? 展开
另外,如何把 {0x01}和
{0x00, 0x00, 0x00, 0x00}
连接起来? 展开
4个回答
展开全部
#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个。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
用联合体
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;
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;
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
char a[4];
int i = 0;
char c = (char)i;
for(int j = 0;j < 4;j++)
{
a[j] = c;
}
int i = 0;
char c = (char)i;
for(int j = 0;j < 4;j++)
{
a[j] = c;
}
追问
如果i的值比较大呢?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询