你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。
chrome
firefox
safari
ie8及以上
ST
意法半导体官网
STM32
中文官网
ST
全球论坛
登录/注册
首页
技术问答
话题
资源
创客秀
视频
标签
积分商城
每日签到
高字节与低字节相互调换??
[复制链接]
qazplm3218
提问时间:2019-4-3 16:40 /
比如:a=1234 转换变成:a=3412 ???
赞
0
收藏
0
评论
11
分享
发布时间:2019-4-3 16:40
举报
请先
登录
后回复
11个回答
zhao.zhao
回答时间:2019-4-4 13:39:51
a0a.1 32b0c
zts329547875 发表于 2019-4-4 10:27
用结构体+联合体
高人
赞
1
评论
回复
支持
1
反对
0
七哥
回答时间:2019-4-3 17:26:58
a0a.1 32b0c
本帖最后由 toofree 于 2019-4-3 17:34 编辑
a=((a&0xff)<<8) | ((a&0xff00)>>8);
或
a=((a<<8)&0xff00) | ((a>>8)&0xff);
a= ((a%0x100)<<8) | (a/0x100);
a= ((a%0x100)*0x100) | (a/0x100);
评分
参与人数
1
蝴蝶豆
+2
收起
理由
STMCU
+ 2
查看全部评分
赞
1
评论
回复
支持
1
反对
0
一代睡神的崛起
回答时间:2019-4-3 17:25:21
a0a.1 32b0c
很简单啊 设置三个变量,a,b,c.a=0x2345,b=(a&0xff00)>>8(高八位变低八位),c=(a&0xff)<<8(低八位变高八位),value=b|c;
评分
参与人数
1
蝴蝶豆
+3
收起
理由
STMCU
+ 3
查看全部评分
赞
0
评论
回复
支持
反对
edmundlee
回答时间:2019-4-3 20:37:56
a0a.1 32b0c
你要换的是10进制数?
评分
参与人数
1
蝴蝶豆
+2
收起
理由
STMCU
+ 2
查看全部评分
赞
0
评论
回复
支持
反对
qazplm3218
回答时间:2019-4-4 07:31:04
a1024a.1 32b0c
谢谢!
赞
0
评论
回复
支持
反对
aiherong
回答时间:2019-4-4 09:02:35
a0a.1 32b0c
要是用汇编该有多简单: AX=0x1234; ECHG AH,AL; 此时AX=0x3412;
评分
参与人数
1
蝴蝶豆
+2
收起
理由
STMCU
+ 2
查看全部评分
赞
0
评论
回复
支持
反对
Kevin_G
回答时间:2019-4-4 10:12:10
a0a.1 32b0c
搞不清是十进制还是十六进制
赞
0
评论
回复
支持
反对
西点钟灵毓秀
回答时间:2019-4-4 10:27:05
a0a.1 32b0c
用结构体+联合体
评分
参与人数
1
蝴蝶豆
+1
收起
理由
STMCU
+ 1
查看全部评分
赞
0
评论
回复
支持
反对
一代睡神的崛起
回答时间:2019-4-4 13:34:24
a0a.1 32b0c
十进制也好弄啊,申明几个变量分别取整取余,然后顺序调换再组合起来不就OK了
赞
0
评论
回复
支持
反对
STM1024
回答时间:2019-4-4 16:39:40
a0a.1 32b0c
你到底是要用十六进制还是十进制的互换啊?十六进制的非常简单,十进制稍微麻烦一点点~
评分
参与人数
1
蝴蝶豆
+2
收起
理由
STMCU
+ 2
查看全部评分
赞
0
评论
回复
支持
反对
骆驼-350031
回答时间:2019-4-11 09:07:51
a0a.1 32b0c
本帖最后由 骆驼-350031 于 2019-4-11 09:11 编辑
#include <stdio.h>
union SHORT_UN{
unsigned char BYTE[2];
short unsigned int value;
};
int main( )
{
union SHORT_UN short_int;
unsigned char temp;
short_int.value = 0x1234;
printf("交换之前 0x%x\n", short_int.value);
temp = short_int.BYTE[0];
short_int.BYTE[0]=short_int.BYTE[1];
short_int.BYTE[1]= temp;
printf("交换之后 0x%x\n", short_int.value);
return 0;
}
只需要简单交互就可以了。效率比较高。在VC++6.0上编译通过。
评分
参与人数
1
蝴蝶豆
+3
收起
理由
STMCU
+ 3
查看全部评分
赞
0
评论
回复
支持
反对
所属标签
相似问题
关于
意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
微信公众号
手机版
快速回复
返回顶部
返回列表
高人
a=((a&0xff)<<8) | ((a&0xff00)>>8);
或
a=((a<<8)&0xff00) | ((a>>8)&0xff);
a= ((a%0x100)<<8) | (a/0x100);
a= ((a%0x100)*0x100) | (a/0x100);
评分
查看全部评分
评分
查看全部评分
评分
查看全部评分
评分
查看全部评分
评分
查看全部评分
评分
查看全部评分
#include <stdio.h>
union SHORT_UN{
unsigned char BYTE[2];
short unsigned int value;
};
int main( )
{
union SHORT_UN short_int;
unsigned char temp;
short_int.value = 0x1234;
printf("交换之前 0x%x\n", short_int.value);
temp = short_int.BYTE[0];
short_int.BYTE[0]=short_int.BYTE[1];
short_int.BYTE[1]= temp;
printf("交换之后 0x%x\n", short_int.value);
return 0;
}
只需要简单交互就可以了。效率比较高。在VC++6.0上编译通过。
评分
查看全部评分