整型变量(int)与字节数组(byte[])的相互转换


// int2byte.cpp : 定义控制台应用程序的入口点。
//#include "stdafx.h"
#include <Windows.h>/*
#define MAKEWORD(a, b)	((WORD)(((BYTE)(((DWORD_PTR)(a)) & 0xff)) | ((WORD)((BYTE)(((DWORD_PTR)(b)) & 0xff))) << 8))
#define MAKELONG(a, b)	((LONG)(((WORD)(((DWORD_PTR)(a)) & 0xffff)) | ((DWORD)((WORD)(((DWORD_PTR)(b)) & 0xffff))) << 16))
#define LOWORD(l)		((WORD)(((DWORD_PTR)(l)) & 0xffff))
#define HIWORD(l)		((WORD)((((DWORD_PTR)(l)) >> 16) & 0xffff))
#define LOBYTE(w)		((BYTE)(((DWORD_PTR)(w)) & 0xff))
#define HIBYTE(w)		((BYTE)((((DWORD_PTR)(w)) >> 8) & 0xff))
*/// ==========================================================
//   Big Endian / Small Endian utility functions
// ==========================================================
BOOL IsSmallEndian()
{DWORD wd = 0x22; if( *((BYTE *)&wd) == 0x22 )  // Small Endianreturn TRUE;elsereturn FALSE;
}void SwapShort(WORD *sp) {BYTE *cp = (BYTE *)sp, t = cp[0]; cp[0] = cp[1]; cp[1] = t;
}void SwapLong(DWORD *lp) {BYTE *cp = (BYTE *)lp, t = cp[0]; cp[0] = cp[3]; cp[3] = t;t = cp[1]; cp[1] = cp[2]; cp[2] = t;
}// int 2 byte
BYTE *Int2Byte(int nVal)
{BYTE *pByte = new BYTE[4];for (int i = 0; i<4;i++){pByte[i] = (BYTE)(nVal >> 8*(3-i) & 0xff);}return pByte;
}// byte 2 int
int Byte2Int(BYTE *pb)
{// assume the length of pb is 4int nValue=0;for(int i=0;i < 4; i++){nValue += ( pb[i] & 0xFF)<<(8*(3-i));}return nValue;
}int _tmain(int argc, _TCHAR* argv[])
{//PC, 小端字节//BYTE *byte = Int2Byte(0x12345678);printf("byte[0]=0x%xh,byte[1]=0x%xh,byte[2]=0x%xh, byte[3]=0x%xh\n", byte[0], byte[1], byte[2],byte[3]);int nVal = Byte2Int(byte);printf("nVal=0x%xh\n\n",nVal);//// 小端字节应该是得到 0xefcdab89, 大端得到0x89abcdefWORD wLow, wHigh;DWORD dwData;BYTE b[4] = {0x89, 0xab, 0xcd, 0xef};DWORD dwVal = 0xefcdab89;// DWORD分解成BYTE数组WORD lo = LOWORD(dwVal),hi = HIWORD(dwVal);printf("lo=0x%xh,hi=0x%xh\n", lo, hi);//BYTE数组组合成DWORDwLow = MAKEWORD(b[0],b[1]);wHigh = MAKEWORD(b[2], b[3]);dwData = MAKELONG(wLow, wHigh);printf("wLow=0x%xh,wHigh=0x%xh,dwData=0x%xh\n", wLow, wHigh, dwData);getchar();return 0;
}


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/243355.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

储存器和寄存器

储存器和寄存器 &#xff08;1&#xff09;、储存器映射 储存器本身不具有地址信息&#xff0c;它的地址是由芯片厂商或用户分配&#xff0c;给储存器分配地址的过程称为储存器映射&#xff0c;如果再分配一个地址就叫重映射。 &#xff08;2&#xff09;、寄存器映射 通过#pr…

一部后现代文学的“奇书”:《烟草经纪人》

美国作家约翰巴思《烟草经纪人》&#xff08;两卷本&#xff0c;1000多页&#xff09;终于出版了&#xff0c;我也算是了却了一桩心事。这部后现代文学的名著&#xff0c;被罗兰巴特、米兰昆德来誉为“奇书”的巨著&#xff0c;我作为策划人花了半年多的时间对译文进行了通读、…

CETK测试原理/测试方法/测试结果分析以及常见WinCE Test Kit运行问题的排查

小弟这两天学习和分析了CETK&#xff0c;并总结了一份文档&#xff0c;粘贴出来&#xff0c;希望对各位有用。 因为文章有26页&#xff0c;没有办法在一篇帖子中罗列出来&#xff0c;我分好几个帖子进行罗列。 CONTENT 一&#xff0e;CETK概述... 1 1&#xff0e;CETK是什么...…

提升.NET应用程序启动速度

.NET框架是Windows系统上所有基于.NET的应用程序的基础。出于性能方面的考虑&#xff0c;Windows会运行.NET框架优化服务&#xff08;它的可执行程序名称是mscorsvw.exe&#xff09;&#xff0c;优化用户机器上.NET应用程序的性能。初次安装新版本的.NET框架&#xff0c;或者框…

2013年08月13日

锡尼河西苏木。我儿时暑期常来的草原&#xff0c;已然翻天覆地。我住过的姑姑家的老房子&#xff0c;只剩下一间土坯房&#xff0c;寂寞在一片砖瓦房之间。院门上了锁&#xff0c;显然已很久没人住过。老供销社已经转卖给个人经营&#xff0c;粮库内也已没有粮食。记得我曾在粮…

提前祝大家十一中秋节快乐

一、一大早被闹钟吵醒&#xff0c;说明还活着&#xff1b;二、不得不从被窝里爬起来上班&#xff0c;说明没有失业&#xff1b;三、收到一些短信&#xff0c;或吃饭聚聚&#xff0c;说明还有朋友想咱&#xff1b;四、听别人的话有时刺耳&#xff0c;说明还有人注意你&#xff1…

分块内存映射处理大文件-例子

参考 &#xff1a;http://user.qzone.qq.com/382164370/infocenter#!app2&viaQZ.HashRefresh&pos1363445766 内存映射文件可以用于3个不同的目的 • 系统使用内存映射文件&#xff0c;以便加载和执行. exe和DLL文件。这可以大大节省页文件空间和应用程序启动运行所需…

视频图像处理仿真测试系统

视频图像处理仿真测试系统 1、仿真测试系统框架 一个完善的仿真测试系统对于图像处理算法的设计至关重要。这个测试系统至少要完成以下功能: (1)模拟可配置的视频流(单帧的视频即为一幅图像)。 (2)模拟视频捕获,生成视频数据。 (3)测试系统与testbench及视频流的数据…

cetk使用方法--nand flash测试

测试环境&#xff1a; OS&#xff1a; wince5.0 cpu&#xff1a; J9 image&#xff1a; ramimage(开始是一个binfs分区存放ramimage&#xff0c;后面是一个fat分区存放user data&#xff0c;它们公用一个块驱动) note&#xff1a; 具体测试command的书写要参照注册表的配置…

如是•吴震寰个展

如是 • 吴震寰个展。我把他的创作称为&#xff02;元艺术&#xff0f;元创作&#xff02;。他用看似简单幼稚平凡的笔墨和行为&#xff0c;将前人积累的艺术经验&#xff0c;当然也包括他自己的经验全部抹杀和归零。让绘画和艺术回到原始的岩画时代&#xff0c;回到自己幼时产…

VGA显示器驱动设计与验证

VGA显示器驱动设计与验证 1、VGA显示原理 VGA显示器显示图像,并不是直接让图像在显示器上显示出来,而是采用扫描的方式,将构成图像的像素点,在行同步信号和场同步信号的同步下,按照从上到下、由左到到右的顺序扫描到显示屏上。 VGA显示器的扫描规律 (1)在行、场同步信…

张洁的新书「流浪的老狗」

张洁的最新书「流浪的老狗」终于出版。这是她第一部文学和摄影的游记&#xff0c;纪录了她一个人背着行囊游历世界的感悟。她驻足的地方大多是不为外人所知的小角落&#xff0c;她深入到世界最有特色和活力的肌理当中&#xff0c;记下她的独特感受和这个世界让我们忽略的以及我…

KITL--概念篇

KITL(Kernel Independent Transport Layer)是基于Windows CE平台的一种软件技术&#xff0c;开发商基于它可以很容易地支持各种调试功能。因为Windows CE的调试是一种远程调试&#xff0c;所以开发工作站&#xff08;运行PB的机器&#xff09;和设备端必须要有相应的通信通道&a…

2006年统计的国内外的一些机器视觉公司汇总

转摘自网上上海&#xff1a;上海恒意得信息科技有限公司法视特&#xff08;上海&#xff09;公司上海锡明科技上海东冠科技上海真锐科技上海元中光学仪器海澳光学仪器日本CCS代表处日本欧姆龙代表处日本松下代表处美国DVT代表处美国COGNEX代表处美国邦纳工程有限公司I2S&#x…

平遥摄影展:卡农•布斯克茨和他的「一天的结束」

平遥国际摄影展&#xff0c;一年一度&#xff0c;端相机人的节日。满街是镜头和摄影背心的攒动。我朋友说&#xff1a;没看到好照片&#xff0c;倒是看到不少好相机。这或许就是中国摄影界的写照&#xff0c;也是平遥摄影展的困境。如果没遇到布斯科茨&#xff0c;或许我真的白…

SystemVerilog声明的位置

SystemVerilog声明的位置 1、包&#xff08;package&#xff09; (1)包的定义 SystemVerilog的包在package和endpackage之间定义 包中可以包含的可综合的结构有 &#xff08;1&#xff09;parameter和localparam常量定义 &#xff08;2&#xff09;const变量定义 &#xff08;…

[学习] FPGA之ip核

>> ip核之概念和分类IP&#xff08;Intellectual Property&#xff09;内核模块是一种预先设计好的甚至已经过验证的具有某种确定功能的集成电路、器件或部件。它有几种不同形式。IP内核模块有行为&#xff08;behavior&#xff09;、结构&#xff08;structure&#xff…

常见的机器视觉软件

一、开源的OpenCV 机器视觉我们最常用的软件是OpenCV&#xff08;Intel OpenSource Computer Vision Library&#xff09;&#xff0c;它的中文论坛http://www.opencv.org.cn/index.php里面有非常清楚的介绍。 二、VisionPro7.0系统&#xff0c;快速开发强大的应用系统 康耐视…

$unit编译单元声明

$unit编译单元声明 SystemVerilog含有编译单元。 相比Verilog&#xff0c;SystemVerilog增加了编译单元的概念。编译单元是同时编译的所有源文件。编译单元为软件工具提供了一种对整个设计子块单独编译的方法。一个子块可能包含第一个或多个模块&#xff08;module&#xff09…

[学习] FPGA之基本原理(可能理解不对)

>> 什么是fpga FPGA是英文Field Programmable Gate Array的缩写&#xff0c;即现场可编程门阵列&#xff0c;它是在PAL、GAL、EPLD等可编程器件的基础上进一步发展的产物。它是作为专用集成电路(ASIC)领域中 的一种半定制电路而出现的&#xff0c;既解决了定制电路的不足…