Esempio n. 1
0
signed int NShtonlInt32(signed int s) {
	int i = 0x12345678;
	unsigned char *l = (unsigned char*) &i;
	if (*l == 0x78) {
		s = BigLittleSwap32(s);
	}
	return s;
}
Esempio n. 2
0
u32 AC_NtoHl(u32 n)
{

       // 若本机为大端,与网络字节序同,直接返回

       // 若本机为小端,网络数据转换成小端再返回

       return AC_checkCPUendian() ? n : BigLittleSwap32(n);

}
Esempio n. 3
0
u32 AC_HtoNl(u32 h)
{

       // 若本机为大端,与网络字节序同,直接返回

       // 若本机为小端,转换成大端再返回

       return AC_checkCPUendian() ? h : BigLittleSwap32(h);

}
Esempio n. 4
0
/*********************************************************************
 * @fn		t_htonl
 *
 * @brief	 	the same as htonl
 *
 * @param	none
 *
 * @return	changed variable
 */
uint32 t_htonl(uint32 h)
{
	return checkCPUendian() ? h : BigLittleSwap32(h);
}
Esempio n. 5
0
/*********************************************************************
 * @fn		t_ntohl
 *
 * @brief	 	the same as ntohl
 *
 * @param	none
 *
 * @return	changed variable
 */
uint32 t_ntohl(uint32 n)
{
return checkCPUendian() ? n : BigLittleSwap32(n);

}
Esempio n. 6
0
// 查找表函数,根据索引值、偏移量以及长度查找序列
char* get_sig(uint32_t index, int offset, int length, unsigned char* dst)
{
	uint32_t index_tmp;
	const unsigned char *base_address;
	// printf("index = %x\n" ,index);
	
	if (ENDIANNESS == 'l')
	{
		index_tmp = BigLittleSwap32(index); // 小端情况,如PC架构
	}
	else
	{
		index_tmp = index; // 大端序,如MIPS架构
	}
	switch (index_tmp) // this line works in mips.
	{
	case 0x15D0EADF:base_address = x15D0EADF; break;
	case 0x09F40DE7:base_address = x09F40DE7; break;
	case 0x189DF2CE:base_address = x189DF2CE; break;
	case 0x1A8AED5C:base_address = x1A8AED5C; break;
	case 0x2F40F9D8:base_address = x2F40F9D8; break;
	case 0x45941B98:base_address = x45941B98; break;
	case 0x359F23C3:base_address = x359F23C3; break;
	case 0x4167F618:base_address = x4167F618; break;
	case 0x4BEE2975:base_address = x4BEE2975; break;
	case 0x57F612DD:base_address = x57F612DD; break;
	case 0x36D426DD:base_address = x36D426DD; break;
	case 0x5E51B55F:base_address = x5E51B55F; break;
	case 0xF245C41D:base_address = xF245C41D; break;
	case 0x545CEFE0:base_address = x545CEFE0; break;
	case 0x5E08D0E0:base_address = x5E08D0E0; break;
	case 0x5E877108:base_address = x5E877108; break;
	case 0x7130F3A5:base_address = x7130F3A5; break;
	case 0x6DD9572F:base_address = x6DD9572F; break;
	case 0x67195BB6:base_address = x67195BB6; break;
	case 0x70886376:base_address = x70886376; break;
	case 0x7137CD3A:base_address = x7137CD3A; break;
	case 0xEF432FB9:base_address = xEF432FB9; break;
	case 0xED4B7E03:base_address = xED4B7E03; break;
	case 0xF1C07C91:base_address = xF1C07C91; break;
	case 0xE45C3124:base_address = xE45C3124; break;
	case 0xDAB58841:base_address = xDAB58841; break;
	case 0xDA58A32E:base_address = xDA58A32E; break;
	case 0xDF977247:base_address = xDF977247; break;
	case 0xEAE0E002:base_address = xEAE0E002; break;
	case 0xC3A46827:base_address = xC3A46827; break;
	case 0xB0F2918A:base_address = xB0F2918A; break;
	case 0xAF4ED407:base_address = xAF4ED407; break;
	case 0xBB9EC2E1:base_address = xBB9EC2E1; break;
	case 0xA8902F8B:base_address = xA8902F8B; break;
	case 0xA3747988:base_address = xA3747988; break;
	case 0x84E4BC95:base_address = x84E4BC95; break;
	case 0x763F4D5B:base_address = x763F4D5B; break;
	case 0x9F6C10A6:base_address = x9F6C10A6; break;
	case 0xA9407E26:base_address = xA9407E26; break;
	case 0xCCF59F07:base_address = xCCF59F07; break;
	default:
		printf("lookup dict failed.\n"); // 查表失败
		base_address = xCCF59F07;
		break;
	}
	memcpy(dst, base_address + offset, length);
	return dst;
}
Esempio n. 7
0
// 查找表函数,根据索引值、偏移量以及长度查找序列
char* get_sig(uint32_t index, int offset, int length, unsigned char* dst)
{
	uint32_t index_tmp;
	const unsigned char *base_address;
	// printf("index = %x\n" ,index);
	
	if(ENDIANNESS=='l')
	{
		index_tmp = index; // 小端情况,如PC架构
	}
	else
	{
		index_tmp = BigLittleSwap32(index); // 大端序,如MIPS架构
	}
	switch(index_tmp) // this line works in mips.
	{
	case 0xa31acc57:base_address = x57cc1aa3; break;
	case 0xa9c5ca51:base_address = x51cac5a9; break;
	case 0x1b9ded4e:base_address = x4eed9d1b; break;
	case 0xeac0d553:base_address = x53d5c0ea; break;
	case 0xde27624b:base_address = x4b6227de; break;
	case 0x0d339d44:base_address = x449d330d; break;
	case 0x5ee76142:base_address = x4261e75e; break;
	case 0x4c5c6847:base_address = x47685c4c; break;
	case 0xd568394d:base_address = x4d3968d5; break;
	case 0xe74da312:base_address = x12a34de7; break;
	case 0x1bb3380b:base_address = x0b38b31b; break;
	case 0x2e101d17:base_address = x171d102e; break;
	case 0xc331f521:base_address = x21f531c3; break;
	case 0x3480121d:base_address = x1d128034; break;
	case 0x6ff7212d:base_address = x2d21f76f; break;
	case 0x245e532b:base_address = x2b535e24; break;
	case 0x3d8f6927:base_address = x27698f3d; break;
	case 0xd3472c2c:base_address = x2c2c47d3; break;
	case 0xe08ef131:base_address = x31f18ee0; break;
	case 0x0be96260:base_address = x6062e90b; break;
	case 0x164017ec:base_address = xec174016; break;
	case 0x422356e9:base_address = xe9562342; break;
	case 0xb9b151e0:base_address = xe051b1b9; break;
	case 0x63f534f6:base_address = xf634f563; break;
	case 0x7c23d097:base_address = x97d0237c; break;
	case 0xae7c5e72:base_address = x725e7cae; break;
	case 0x71a17c99:base_address = x997ca171; break;
	case 0x91e463a7:base_address = xa763e491; break;
	case 0x079255a3:base_address = xa3559207; break;
	case 0xc7c4f69c:base_address = x9cf6c4c7; break;
	case 0x830d87dd:base_address = xdd870d83; break;
	case 0x908b026c:base_address = x6c028b90; break;
	case 0x93180268:base_address = x68021893; break;
	case 0x5511cb67:base_address = x67cb1155; break;
	case 0x5d90086b:base_address = x6b08905d; break;
	case 0xf4a21c72:base_address = x721ca2f4; break;
    case 0xb6bbcc90:base_address = x90ccbbb6; break;
	case 0xccdab6ec:base_address = xecb6dacc; break;
	case 0x74a9e0f7:base_address = xf7e0a974; break;
	case 0x4f55d026:base_address = x26d0554f; break;
	default:
		printf("lookup dict failed.\n");return 0; break;
	}
	memcpy(dst, base_address + offset, length);
	return dst;
}
Esempio n. 8
0
int main()
{
	printf("%d\n", check_cpu_endian());
	printf("%d\n", check_cpu_endian2());
	printf("%d\n", check_cpu_endian3());
	printf("%d\n", is_bigendian());
	

	printf("sizeof(short int)=%lu\n", sizeof(short int));
	printf("sizeof(int)=%lu\n", sizeof(int));
	printf("sizeof(long int)=%lu\n", sizeof(long int));
	printf("sizeof(long long int)=%lu\n", sizeof(long long int));

	printf("~0=0x%X\n", (uint8_t)~0);
	printf("~0 << 8=0x%X\n", (uint8_t)~0 << 8);
	printf("~0 << 56=0x%lX\n", (uint64_t)((uint8_t)~0) << 56);

	int aa = -3;
	unsigned int bb = aa;
	int cc = bb;
	printf("int %d; uint %u int %d\n", aa, bb, cc);
	/*
	uint32_t dd = UINT32_MAX;
	int32_t ee = dd;
	printf("uintmax %u int %d\n", dd, ee);
	*/

	puts("32-------------------");
	int n1 = 0x12345678;
	unsigned char* pc = (unsigned char*)(&n1);
	printf("cpu order:\n");
	print_endian(pc, 32);

	n1 = htonl(n1);
	printf("htonl order:\n");
	print_endian(pc, 32);

	n1 = BigLittleSwap32(n1);
	printf("BigLittleSwap32 order:\n");
	print_endian(pc, 32);

	puts("64-------------------");

	uint64_t n2 = 0x1A2B3C4D12345678;
	pc = (unsigned char*)(&n2);
	printf("cpu order:\n");
	print_endian(pc, 64);

	n2 = BigLittleSwap64(n2);
	printf("BigLittleSwap64 order:\n");
	print_endian(pc, 64);

	n2 = __bswap_64(n2);
	printf("__bswap_64 order:\n");
	print_endian(pc, 64);

	n2 = LITTLE_ENDIAN_CHANGE(n2, 64);
	printf("LITTLE_ENDIAN_CHANGE64 order:\n");
	print_endian(pc, 64);

	n2 = BIG_ENDIAN_CHANGE(n2, 64);
	printf("BIG_ENDIAN_CHANGE64 order:\n");
	print_endian(pc, 64);


	puts("16-------------------");

	uint16_t n3 = 0x1234;
	pc = (unsigned char*)(&n3);
	printf("cpu order:\n");
	print_endian(pc, 16);

	n3 = BigLittleSwap16(n3);
	printf("BigLittleSwap16 order:\n");
	print_endian(pc, 16);


	n3 = little_endian_chg16(n3);
	printf("little_endian_chg16 order:\n");
	print_endian(pc, 16);

	n3 = LITTLE_ENDIAN_CHANGE(n3, 16);
	printf("LITTLE_ENDIAN_CHANGE16 order:\n");
	print_endian(pc, 16);

	n3 = BIG_ENDIAN_CHANGE(n3, 16);
	printf("BIG_ENDIAN_CHANGE16 order:\n");
	print_endian(pc, 16);


	n3 = stream_ltt_bit16(pc, 16);
	printf("stream_ltt_bit16 order:\n");
	print_endian(pc, 16);

	n3 = stream_big_bit16(pc, 16);
	printf("stream_big_bit16 order:\n");
	print_endian(pc, 16);

	puts("16-------------------");
	uint16_t tn = 0x1234;
	print_endian((unsigned char*)(&tn), 16);

	uint64_t n4 = stream_ltt_bit64((unsigned char*)(&tn), 16);
	pc = (unsigned char*)(&n4);
	printf("stream_ltt_bit64 order:\n");
	print_endian(pc, 64);


	n4 = stream_big_bit64((unsigned char*)(&tn), 16);
	pc = (unsigned char*)(&n4);
	printf("stream_big_bit64 order:\n");
	print_endian(pc, 64);


	puts("32-------------------");	
	char buff[4] = {'\x12', '\x34', '\x56', '\x78'};
	print_endian((unsigned char *)buff, 32);
	const char *p = buff;
	printf("p=%p\n", p);
	int m0 = stream_ltt_bit32(&p, 4);
	printf("p=%p m=0x%X\n", p, m0);

	char buff2[4];
	char *p2 = buff2;
	printf("p=%p\n", p2);
	p2 = bit32_ltt_stream(m0, p2, 4);
	print_endian((unsigned char *)buff2, 32);
	printf("p=%p\n", p2);
	


	return 0;

}