社区
C语言
帖子详情
怎样将0x01 02 03 04转换成0x04 03 02 01
Ryoko7
2003-11-06 04:08:02
将形如0x01 02 03 04的整数转换成形如0x04 03 02 01
...全文
244
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
打赏
举报
回复
颠倒过来输出不就完了
python用1234_串口发送16进制1234,用python接收的是'\x
01
\x
01
\x
03
\x
04
'但用python再怎么
转换成
原来的数据1234呢?...
展开全部假设你接2113收到的'\x
01
\x
02
\x
03
\x
04
'储存在5261a变量中,你想要转换为1234储存在b变量中,那么可以参考进行如下41
02
操作1653:>>> a='\x
01
\x
02
\x
03
\x
04
'>>> b=''>>> for i in s:b=b + str(ord(i))>>> b'1234'>>> b = int(b) #如果要将b转为数值变量,则使用int()>>> b...
Modbus-RTU报文举例-0x
03
功能码
Modbus
03
功能码数据帧解析
linux串口对0X0D、0X0A等特殊字符的处理
摘要:项目中使用STM32与RK3588串口通信传输温湿度数据时,出现CRC8校验失败问题。经排查发现,Linux端会将特殊字符(如0x0D、0x0A等)自动转换,导致接收数据被篡改,CRC校验值错误。解决方案是在Linux串口初始化时清除输入阶段的自动处理标志(IGNBRK、ICRNL等),使数据以原始形式接收。修改后,系统能正确接收特殊字符,CRC校验恢复正常。该问题表面偶现实为必现,关键在于禁用串口的自动转换功能。
Wireshark实战:通过Modbus异常帧0x83/0x86精准定位工业通讯故障
在工业自动化与物联网领域,Modbus TCP作为一种广泛应用的通讯协议,其稳定运行是数据采集与设备控制的基础。理解其通讯原理,尤其是异常处理机制,是进行高效系统调试与维护的关键。当设备间通讯出现问题时,协议会通过特定的异常响应帧(如功能码0x83、0x86)反馈错误原因,这远比简单的“通讯超时”提示更具诊断价值。通过**网络抓包分析**技术,工程师可以透视原始数据流,直接解读这些异常码(如0x
01
非法功能、0x
02
非法地址),从而将模糊的故障现象转化为精确的定位信息。这种**实战方法**不仅适用于PLC、
保姆级教程:用CANoe/CANalyzer实操UDS 0x19服务,手把手读取汽车故障码(含状态掩码详解)
本文提供了一份详细的保姆级教程,教你如何使用CANoe/CANalyzer实操UDS 0x19服务,手把手读取汽车故障码,包括状态掩码的详细解析。通过环境准备、核心功能解析、实战案例和高级应用,帮助汽车电子工程师快速掌握故障诊断的核心技能。
C语言
70,040
社区成员
243,237
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章