你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。
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管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号
手机版
快速回复
返回顶部
返回列表
高人
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上编译通过。
评分
查看全部评分