社区
C语言
帖子详情
怎样将0x01 02 03 04转换成0x04 03 02 01
Ryoko7
2003-11-06 04:08:02
将形如0x01 02 03 04的整数转换成形如0x04 03 02 01
...全文
166
15
打赏
收藏
怎样将0x01 02 03 04转换成0x04 03 02 01
将形如0x01 02 03 04的整数转换成形如0x04 03 02 01
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
15 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
sunstarstar
2003-11-06
打赏
举报
回复
打错字了!!(不好意思)
Caoyu015(酷鱼一代) 的解法有点问题,原题的不是整个颠倒,而是部分颠倒
sunstarstar
2003-11-06
打赏
举报
回复
Caoyu015(酷鱼一代) 的解法有点问题,原题的不是整个颠倒,二是部分颠倒
heartlove
2003-11-06
打赏
举报
回复
一条汇编指令可以解决四字节的顺序交换问题
TianGuangZao
2003-11-06
打赏
举报
回复
unsigned result; -> unsigned int result;
不小心漏掉。
TianGuangZao
2003-11-06
打赏
举报
回复
殊途同归,此题解法甚多,我也来现丑。
+--------------+
| +----+ |
| | | |
01 02 03 04
分别交换 01 04 和 02 03。
#include <stdio.h>
int main()
{
unsigned int value = 0x01020304;
unsigned result;
result = ((value & 0x000000ff) << 24) +
((value & 0x0000ff00) << 8 ) +
((value & 0x00ff0000) >> 8 ) +
((value & 0xff000000) >> 24);
printf("0x%p\n", result);
return 0;
}
lovenoend
2003-11-06
打赏
举报
回复
主要原理就是把他分解成8 Bit,然后交换
Paris_Luo
2003-11-06
打赏
举报
回复
bestfyj(笑俊) 正解
hujun614
2003-11-06
打赏
举报
回复
抱歉,语法生疏了,括号一大堆。
int ConvertInt(int nSrc){
int ntarg= 0;
int i;
for(i=0;i<4;i++){
ntarg = ntarg | (((nSrc >> (8*i)) & 0x00ff )<<(8*(3-i)));
}
return ntarg;
}
arfi
2003-11-06
打赏
举报
回复
#include <stdio.h>
void main(void)
{
int num = 0x7896f3e4;
char *p;
p = (char *)#
p[0] ^= p[3];
p[3] ^= p[0];
p[0] ^= p[3];
p[1] ^= p[2];
p[2] ^= p[1];
p[1] ^= p[2];
printf("%x\n", num);
}
短歌如风
2003-11-06
打赏
举报
回复
x = ((x >> 24) &0xff) | ((x >>8) & 0xff00) | ((x << 8) & 0xff0000) | (x << 24);
bestfyj
2003-11-06
打赏
举报
回复
vc 下编译通过
#include <stdio.h>
void main()
{
unsigned a=0x01020304;
unsigned b=0;
int i;
for(i=0;i<4;i++)
b+=(((a>>(8*i))&0xff)<<((3-i)*8));
printf("%x\n",b);
}
祝你顺利
fierygnu
2003-11-06
打赏
举报
回复
用个union,交换字节:0<->3、1<->2。
union
{
int i;
char chs[4];
};
SCUM
2003-11-06
打赏
举报
回复
说明白点看
Caoyu015
2003-11-06
打赏
举报
回复
int value = 0x01020304, value2 = 0;
int mask = 0x80000000, mask1 = 0x00000001;
for( int i = 31; i > 16; i-- )
{
value2 |= ( value & mask ) >> i;
value2 |= ( value & mask1 ) << i;
mask >>= 1;
mask1 <<= 1;
}
jnlon
2003-11-06
打赏
举报
回复
颠倒过来输出不就完了
0x01中0x表示的含义
16进制:0x01 中的 0x 表示其是16进制,0x当标识使用,不参与进制的计算。1)如 0x01
转换
成
10 进制,只需要看 0x 后面的 01。2)再比如 0x0f
转换
成
10 进制,只需要看 0x 后面的 0f 即可,0f
转换
成
10 进制为 15。 C语言、C++、Shell、Python、Java语言及其他相近的语言使用字首“0x”,例如“0x5A3”。开头的“0”令解析器更易辨认数,而“x”则代表十六进制(就如“O”代表八进制)。在“0x”中的“x”可以大写或小写。对于字符量C语言中则
Qt下hex转字符串代码实现,例如{0x01,0x02,0x03}转“010203“
hex转字符串代码实现,例如{0x01,0x02,0x03}转"010203"
单片机中0x00和0x01有什么区别
0x00=0,0x01=1,比如说P1=0x00,也就是给P1.0~P1.7端口赋低电平,P1=0x01,是P1.0为高电平,P1.1~P1.7为低电平. 这是十六进制的表示方法,
转换
成
二进制分别是:0x00 = 0000 0000;0x01 = 0000 0001,也就是单片机P口的八位P1.7~P1.0从低位到高位输出的电平。 ...
大端模式和小端模式
大端模式 : 低位放在高地址 例1 :存放 int test = 0x0a0b0c0d; 1000H 1001H 1002H 1003H 0a 0b 0c 0d 例2:读取,按照大端方式读取 1 char array[8] = {0x01 , 0x02 , 0x03 , 0x04 , 0x05 , 0x06 , 0x07 , 0x08}; 2 short int *pshort = (short *)array; // 强制
转换
..
Java中将0x开头的十六进制字符串
转换
成
十进制整数&Java中如何表示二进制,八进制,十六进制的数字
由于input(输入数据)是以0x开头的字符串,并不是整型。因而在用时用会由于参数类型不匹配而无法正常运行。而则可正常输出0x8100的10进制值33024.该函数要求参数s为全数字。如“8100”,而对于“0x8100"则不能进行运算。所以对于0x开头的字符串需要先截取数字子串,再进行换算。即可将0x开头的十六进制字符串
转换
成
十进制整数。
C语言
69,382
社区成员
243,073
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章