社区
C++ Builder
帖子详情
如何将一个长整型的高低字节调换?马上揭贴给分
ceble
2004-08-10 04:25:11
如何将一个长整型的高低字节调换?
例如
unsigned long int date=20021120(0X01317F80),
把date的高低字节调换后变成0X807F3101,即10进制的2155819265。
...全文
546
15
打赏
收藏
如何将一个长整型的高低字节调换?马上揭贴给分
如何将一个长整型的高低字节调换? 例如 unsigned long int date=20021120(0X01317F80), 把date的高低字节调换后变成0X807F3101,即10进制的2155819265。
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
15 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
铖邑
2004-08-10
打赏
举报
回复
unsigned char *p = (unsigned char *)&date;
烟波三千里人鬼五百年
2004-08-10
打赏
举报
回复
呜呜,又来晚了,分不到了
哎。郁闷。
ceble
2004-08-10
打赏
举报
回复
TO: zhangcg(白马)
你给出的两个函数极具收藏价值,可以解决包括本问题在内的许多问题,谢谢!
TO: yjy1001(蓝鲸--优秀得郁闷的鱼)
你给出的算法好象是按位翻转,不是按字节翻转,非常感谢你的关注
TO: jishiping(JSP 季世平)
无言的感激,永远的楷模
烟波三千里人鬼五百年
2004-08-10
打赏
举报
回复
哈哈,大家都很强啊。我在给个汇编解法,也很简单,绝不浪费内存。-_-|||
//---------------------------------------------------------------------------
unsigned long int SwapByteOrder (unsigned long int Value)
{
asm
{
xor eax, eax
mov ebx, Value
mov ah, bl
mov al, bh
shl eax, 0x10
shr ebx, 0x10
mov ah, bl
mov al, bh
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
unsigned long int date = 20021120;//(0X01317F80),
Caption = SwapByteOrder(date);
}
过客猫2022
2004-08-10
打赏
举报
回复
哎,这么简单
老季的答案够简单了
yjy1001
2004-08-10
打赏
举报
回复
unsigned long int date=20021120(0X01317F80);
unsigned long int hig, low;
hig = (data & 0xffff0000) >> 16;
low = (data & 0x0000ffff);
data = hig | (low << 16 );
ShowMessage(IntToStr(data));
看结果就知道 正确的了
jishiping
2004-08-10
打赏
举报
回复
#include <algorith.h>
void SwapLong(DWORD& Val)
{
BYTE* pb = (BYTE*)&Val;
swap(pb[0], pb[3]);
swap(pb[1], pb[2]);
}
constantine
2004-08-10
打赏
举报
回复
用移位就可以了,不用多少代码,不过我现在要区吃饭,搞不定晚上找我,我帮你写
zhangcg
2004-08-10
打赏
举报
回复
用以下两个函数实现任意转换:
一个整数转换成标准的存储信息FF FF FF FF
另一个函数把 FF FF FF FF转化成具体的数值
AnsiString tranFloatToStr(const float fnum)
{
char buf[10];
AnsiString szInfo;
memcpy(buf,&fnum,4);
int i = buf[3];
szInfo = RightStr(IntToHex(i,2),2).SubString(1,1) + RightStr(IntToHex(i,2),2).SubString(2,1);
i = buf[2];
szInfo = szInfo + RightStr(IntToHex(i,2),2).SubString(1,1) + RightStr(IntToHex(i,2),2).SubString(2,1);
i = buf[1];
szInfo = szInfo + RightStr(IntToHex(i,2),2).SubString(1,1) + RightStr(IntToHex(i,2),2).SubString(2,1);
i = buf[0];
szInfo = szInfo + RightStr(IntToHex(i,2),2).SubString(1,1) + RightStr(IntToHex(i,2),2).SubString(2,1);
return szInfo;
}
float tranStrToFloat(const AnsiString szInfo)
{
float fnum;
char cbuf[5];
AnsiString sz1;
sz1 = szInfo.SubString(7,1) + szInfo.SubString(8,1) + szInfo.SubString(5,1) + szInfo.SubString(6,1) +
szInfo.SubString(3,1) + szInfo.SubString(4,1) + szInfo.SubString(1,1) + szInfo.SubString(2,1);
cbuf[0] = StrToInt("0x" + sz1.SubString(1,2));
cbuf[1] = StrToInt("0x" + sz1.SubString(3,2));
cbuf[2] = StrToInt("0x" + sz1.SubString(5,2));
cbuf[3] = StrToInt("0x" + sz1.SubString(7,2));
cbuf[4] = '\0';
memcpy(&fnum,cbuf,4);
return fnum;
}
ceble
2004-08-10
打赏
举报
回复
to:xpdavis(咕嘟)
不能通过编译,
unsigned char *p = &date;
指针类型错误
wcccc1
2004-08-10
打赏
举报
回复
用位操作的移位应也行吧.
wcccc1
2004-08-10
打赏
举报
回复
好办法
铖邑
2004-08-10
打赏
举报
回复
unsigned long int date=20021120(0X01317F80);
unsigned char *p = &date;
unsigned char c = *p;
*p = p[1];
p[1] = c;
c = p[2];
p[2] = p[3];
p[3] = c;
铖邑
2004-08-10
打赏
举报
回复
不好意思,上面是双字节的调换,单字节调换类似
unsigned long int date=20021120(0X01317F80);
unsigned char *p = &date;
unsigned char c = *p;
*p = p[1];
p[1] = c;
c = p[2];
p[2] = p[3];
p[4] = c;
铖邑
2004-08-10
打赏
举报
回复
unsigned long int date=20021120(0X01317F80);
unsigned short *p = &date;
unsigned short s = *p;
*p = p[1];
p[1] = s;
TIA博途-32位浮点数大小端存储-
高低
字节
转换的具体方法示例(4种
字节
排列顺序).docx
在计算机科学中,32位浮点数...总之,理解和掌握浮点数的大小端存储以及
高低
字节
转换在TIA博途中是至关重要的,特别是在进行跨平台或网络通信的程序设计时。通过这个FB块的示例,我们可以更直观地学习并应用这些概念。
C语言之共用体
高低
位转换:已知
一个
长
度为2个
字节
的整数,现欲将其高
字节
与 低
字节
相互交换后输出,试用共用体类型实现这一功能。
已知
一个
长
度为2个
字节
的整数,现欲将其高
字节
与 低
字节
相互交换后输出,试用共用体类型实现这一功能。 实现代码:原理就不讲了,下来翻书好不好~( ̄▽ ̄)~*涅。 /*还是大概讲一下,大概就是共用体内,内存是...
PLC的
高低
字节
转换
PLC的
高低
字节
转换,通过三菱汇川,Codesys来实现PLC的
高低
字节
转换
怎么将
一个
数字
高低
位互换_
高低
字节
位交换函数
The greatest mistake you can make in life is to be continually fearing you will make one.-- Elbert Hubbard将
一个
整数的高地位进行
调换
的思路,
分
别取到每一位,然后按指定顺序排列。使用 C 语言描述的解法有...
C++
高低
字节
交换
8位bit
高低
位交换。
C++ Builder
13,871
社区成员
102,694
社区内容
发帖
与我相关
我的任务
C++ Builder
C++ Builder相关内容讨论区
复制链接
扫一扫
分享
社区描述
C++ Builder相关内容讨论区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章