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

// int2byte.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include <Windows.h>

/*
#define MAKEWORD(a, b)	((WORD)(((BYTE)(((DWORD_PTR)(a))&nbsp;&&nbsp;0xff)) | ((WORD)((BYTE)(((DWORD_PTR)(b)) & 0xff))) << 8))
#define MAKELONG(a, b)	((LONG)(((WORD)(((DWORD_PTR)(a))&nbsp;&&nbsp;0xffff)) | ((DWORD)((WORD)(((DWORD_PTR)(b)) & 0xffff))) << 16))
#define LOWORD(l)		((WORD)(((DWORD_PTR)(l))&nbsp;&&nbsp;0xffff))
#define HIWORD(l)		((WORD)((((DWORD_PTR)(l)) >> 16)&nbsp;&&nbsp;0xffff))
#define LOBYTE(w)		((BYTE)(((DWORD_PTR)(w))&nbsp;&&nbsp;0xff))
#define HIBYTE(w)		((BYTE)((((DWORD_PTR)(w)) >> 8)&nbsp;&&nbsp;0xff))
*/

// ==========================================================
//   Big Endian / Small Endian utility functions
// ==========================================================
BOOL IsSmallEndian()
{
	DWORD wd = 0x22; 
	if( *((BYTE *)&wd) == 0x22 )  // Small Endian
		return TRUE;
	else
		return 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 4
	int 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, 大端得到0x89abcdef
	WORD 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数组组合成DWORD
	wLow = 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;
}

整型变量(int)与字节数组(byte[])的相互转换,布布扣,bubuko.com

时间: 2024-10-22 21:48:00

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

Java基础知识强化之IO流笔记27:FileInputStream读取数据一次一个字节数组byte[ ]

1. FileInputStream读取数据一次一个字节数组byte[ ]  使用FileInputStream一次读取一个字节数组: int read(byte[]  b) 返回值:返回值其实是实际读取的字节个数 . 2. 代码示例: 1 package com.himi.fileinputstream; 2 3 import java.io.FileInputStream; 4 import java.io.IOException; 5 6 7 8 /** 9 * 10 * 使用FileIn

字节数组byte[]和整型,浮点型数据的转换——Java代码

近期在写C++ socket和java socket之间的通信程序,涉及到整数浮点数的传输.须要从字节数组还原数据,查了一些资料.总结例如以下 1.       整数和浮点数的机器表示 在机器内部.不论是一个整数还是浮点数.都是以一个二进制串的形式存储. 整数可能是原码.补码表示,浮点数有阶码尾数两部分构成.不管如何都是一个二进制串.可是这个二进制串如何表示不同的机器可能採取不同的方案. 关于浮点数: 一个机器上的32位浮点数的二进制串在还有一个机器把它作为32位浮点数解释时可能得到不同的值,这

C#中字节数组(byte[])和字符串相互转换

转换过程主要使用到System.Text.Encoding命名空间下的类 1. 字符串转换成字节数组byte[]: string str = "This is test string"; byte[] byteArray = System.Text.Encoding.Default.GetBytes(str); 2.字节数组换成字符串: byte[] byteArray = 通过某种方式获取到的字节数组 string str = System.Text.Encoding.Default

C#-----字节数组(byte[])和字符串相互转换

   Encoding类  表示字符编码 1.字符串转换成字节数组byte[] using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; namespace FileStreamTest { class Program { static void Main(string[] args) {

数值类型与字节数组之间的相互转换

我们在上文 如何选择使用字符串还是数字呢? 中阐述了使用数值类型的好处,那么问题来了,如何在数值类型与字节数组之间相互转换呢? 我们先看看单个数值类型和字节数组之间的转换,我们以Integer类型为例: public static byte[] intToBytes(int x) {     ByteBuffer intBuffer = ByteBuffer.allocate(Integer.BYTES);     intBuffer.putInt(0, x);     return intBu

C#--整型与字节数组byte[]之间的转换

转:https://www.cnblogs.com/dayang12525/p/6393941.html using System; int  i = 123;byte [] intBuff = BitConverter.GetBytes(i);     // 将 int 转换成字节数组lob.Write(intBuff, 0, 4);i = BitConverter.ToInt32(intBuff, 0);           // 从字节数组转换成 int double x = 123.45

Bitmap转灰度字节数组byte[]

工作中遇到图片转灰度数组的需要,经过研究和大神的指导,最终得到如下两个方法,可以实现位图转灰度数组 简单的位图转灰度数组就是:得到位图中的每个像素点,然后根据像素点得到RGB值,最后对RGB值,根据灰度算法得到灰度值即可 /*如一张480*800的图片,最终得到一个byte[480*800/2]的灰度数组,因为函数把每两个相邻高的像素灰度转化为一个灰度*/ private byte[] java_convertIMG2GreyArray(Bitmap img) { byte[] theBytes

C# 常见的字节数组 byte[] 复制方法

byte[] src ={1,2,3,4,5}; byte[] dest = new byte[src.Length]; for(int i=0; i<src.Length; i++) { dest[i] = src[i] } 1 byte[] src ={1,2,3,4,5}; 2 byte[] dest = new byte[src.Length]; 3 Array.Copy(src, dest, src.Length); byte[] src ={1,2,3,4,5}; byte[] de

C# 中字符串string和字节数组byte[]的转换

string转byte[]: byte[] byteArray = System.Text.Encoding.Default.GetBytes ( str ); byte[]转string: string str = System.Text.Encoding.Default.GetString ( byteArray ); string转ASCII byte[]: byte[] byteArray = System.Text.Encoding.ASCII.GetBytes ( str ); AS