社区
C++ Builder
帖子详情
如何将一个长整型的高低字节调换?马上揭贴给分
ceble
2004-08-10 04:25:11
如何将一个长整型的高低字节调换?
例如
unsigned long int date=20021120(0X01317F80),
把date的高低字节调换后变成0X807F3101,即10进制的2155819265。
...全文
483
15
打赏
收藏
如何将一个长整型的高低字节调换?马上揭贴给分
如何将一个长整型的高低字节调换? 例如 unsigned long int date=20021120(0X01317F80), 把date的高低字节调换后变成0X807F3101,即10进制的2155819265。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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
TIA博途-32位浮点数大小端存储-
高低
字节
转换的具体方法示例(4种
字节
排列顺序)
PLC的
高低
字节
转换
PLC的
高低
字节
转换,通过三菱汇川,Codesys来实现PLC的
高低
字节
转换
区块链之去中心化微博
开篇先讲两个小故事故事一:在北京一家创业公司工作的年轻女白领是一个旅行爱好者,喜欢旅行并分享到微博上。趁着五一假期到泰国旅游,她拍摄了一组照片分享到了微博上,24h后,微博阅读量达到1万,她收到了100元的广告费。年轻女白领收到广告费后非常的开心,因为她做着自己喜欢的事,还因此而获得了额外收益,从此决定创作出更多精美内容发送到微博上,与人分享自己的快乐。故事二:201X年,微博用户掀起“打拐”行动(打击拐卖儿童行动),一条“6岁女孩周XX四川彭州被拐”的微博在网上被疯狂转发,引来无数网友关心。不久之后,杭州一位女士,发现该条微博上使用的照片正是自己女儿的照片,而自己的女儿一直在家中,并未被拐。于是立马报警,网警查看了微博的操作记录(全部存在区块链上),快速追溯到了虚假微博的始作俑者,并将其绳之于法。上述故事情节,在去中心化微博平台中都是可以实现的,借助于区块链技术,可以保证微博上的所有数据和行为可溯源,从而保证传播信息的真实性。同时,由于去除掉了中心化主体,微博的参与者将同时成为微博平台的所有者,可以共享微博平台的收益。一、现有的中心化微博平台——新浪微博传统微博(如新浪微博)就是一个中心化的应用平台,新浪公司就是整个微博平台的中心。新浪公司制定新浪微博的运行规则,开发出整个微博平台,为其提供中央服务器,维持着整个新浪微博的运转,并不断地向外推广,吸引用户使用。一切商业行为都是为了追逐利益的,新浪公司运营新浪微博,也是为了吸引广告主投放广告,从而获得巨额的广告收入。在中心化的微博平台中,大致流程是这样的,博主(发微博者)会编辑微博发送到新浪微博平台中,新浪微博将微博推送给观众(看微博者),观众查看微博,微博中会夹杂着一些广告,观众看微博时也会看到一些广告。广告主会为广告的浏览量和点击量,支付广告费给新浪公司。二、去中心化微博平台与传统微博平台不同,在去中心化微博平台中,将没有中心机构,没有中央服务器,主要是通过区块链技术,运用分布式自治组织(DAO)的组织架构,实现微博平台的自治。让每一个微博参与者都成为微博平台的所有者,他们将共享微博平台获得的全部收益。在去中心化微博平台中,参与者主要有:发微博者,他们是微博内容提供者,是最核心的参与者之一。微博平台受不受欢迎,很大程度上依赖于内容的质量,而这就必然取决于发微博者。发微博者可以根据其微博中所包含广告的浏览量(等同于微博浏览量)和点击量,来获得微币(WB)作为奖励。挖矿者(存储节点),提供算力和存储能力,充当着服务器的角色,是微博平台得以正常运行的基础。微博系统每隔10分钟会将最新微博打包发送到各个存储节点中,存储节点会储存最新的微博数据,保证所有数据可溯源(区块链技术特点)。作为奖励,系统会给提供算力和存储能力的挖矿者以微币(WB)作为奖励。看微博者,他们是微博内容的浏览者,是微博平台中的主要用户,根据其对微博以及广告的浏览量和点击量,系统也会给予其微币(WB)作为奖励;广告主,在微博中投放广告,以提高自己品牌知名度或者直接引流的商家,他们可以在微博中投放广告,并根据广告的浏览量和点击量,用微币(WB)来支付广告费。在四个参与者中,发微博者、挖矿者和看微博者在参与过程中,都会获取到微币(WB)作为奖励,而广告主则主要需要消耗微币(WB)才能参与到微博活动中。因此,会形成一个微币(WB)交易市场。在交易市场中,广告主用现实中的通用货币(如RMB)购买其他参与者手中的微币(WB)。此外,博主(发微博者)通过微博下方所包含的广告是可以获得收益的,但广告也会给粉丝(看微博者)带来阅读成本,甚至造成反感,从而取消关注,所以博主会主动去把握好广告与粉丝之间的均衡。因此,在去中心化微博平台中,会将微博中广告数量和内容的选择权让渡给博主,从而降低粉丝阅读广告的心理成本,并提高广告的点击量。如一个摄影博主,发了一个在极地拍摄美景的微博,微博下方的广告则选择了与博主同款单反相机的广告,因为关注他微博的人都是以摄影爱好者为主,因此对这样的广告不会过度反感,甚至还会主动去了解。(注:笔者经常在某浪微博上刷到贷款、祛痘、整形等垃圾广告,表示十分反感,无法忍受!)去中心化微博平台参与者所构成的业务流程图详情如下:
怎么将一个数字
高低
位互换_
高低
字节
位交换函数
The greatest mistake you can make in life is to be continually fearing you will make one.-- Elbert Hubbard将一个整数的高地位进行
调换
的思路,分别取到每一位,然后按指定顺序排列。使用 C 语言描述的解法有以下几种。》》》★#include intmain(void){// unsigned sh...
字节
顺序重置及“#include
”相关的STL最重要的头文件提醒
这两天在写一个程序,需要将二进制文件中的数据以指定结构读入内存,说明文档中有提到大端序和小端序(Big Endian or Little Endian) 的概念,就找了一下
字节
顺序重置的算法,在一篇名为“如何将一个
长
整
型
的
高低
字节
调换
?”的帖子里找到如下代码备忘,短短几行而已: #include <algorith.h> void SwapLong(DWORD&...
C++ Builder
13,826
社区成员
102,678
社区内容
发帖
与我相关
我的任务
C++ Builder
C++ Builder相关内容讨论区
复制链接
扫一扫
分享
社区描述
C++ Builder相关内容讨论区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章