社区
C语言
帖子详情
怎样将0x01 02 03 04转换成0x04 03 02 01
Ryoko7
2003-11-06 04:08:02
将形如0x01 02 03 04的整数转换成形如0x04 03 02 01
...全文
239
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呢?...
本文介绍了如何在Python中通过ord()函数和字符串连接,将'x
01
x
02
x
03
x
04
'这样的十六进制字符串转换为十进制数1234,并演示了使用int()函数将其转换为数值变量的过程。同时提及了不同编程语言中十六进制转换的方法。
Modbus-RTU报文举例-0x
03
功能码
本文详细介绍了Modbus-RTU协议的通信流程,通过0x
03
功能码举例说明了如何读取保持寄存器。在主从设备通信中,主设备发送请求,从设备响应。Modbus-RTU报文包含表头、功能码、数据区和校验码。举例中展示了读取单个和多个模拟量输出寄存器的请求与响应帧,解析了数据帧内容。
linux串口对0X0D、0X0A等特殊字符的处理
在STM32与RK3588通过串口通信传输温湿度数据时,出现CRC8校验失败问题。经查为Linux系统对0x0D、0x0A等特殊字符自动转换所致。解决方法是在串口初始化时关闭IGNBRK、ICRNL等输入处理标志,确保数据以原始形式接收,从而避免数据被篡改,恢复正确的CRC校验。
Wireshark实战:通过Modbus异常帧0x83/0x86精准定位工业通讯故障
本文聚焦于使用Wireshark分析Modbus TCP异常响应帧(功能码0x83/0x86),详解异常帧结构、标准异常码(0x
01
–0x
04
)的含义与实战定位方法,涵盖抓包配置、过滤器应用、报文逐层解析及超时/自定义异常等进阶场景。强调通过异常帧反向诊断通讯故障根源,如地址错误、功能码不支持、数据越界或从站设备故障,提升工业现场排错效率。
保姆级教程:用CANoe/CANalyzer实操UDS 0x19服务,手把手读取汽车故障码(含状态掩码详解)
本文基于CANoe/CANalyzer平台,详解ISO 14229标准下UDS 0x19服务的工程实践,涵盖环境配置、状态掩码(如0x09)解析、DTC读取流程(19
01
/
02
)、快照数据(19
04
)与扩展数据(19 06)提取,以及多帧响应处理、否定响应码(如0x12/0x31)排查等关键技术点。
C语言
70,038
社区成员
243,247
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章