亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? iso8583.cpp

?? ISO 8583 implementation.
?? CPP
?? 第 1 頁 / 共 5 頁
字號:
// Network Management Request
 BOOL ISO8583MSG::IsNetworkMgmtRequest(void)
{
	// Message-Type-Identifier [12..15=4]    	
	return((memcmp((PBYTE)&chMsg[12], CISO_MSGTYPE_NETMGMT_RQST, 4) == 0));
}

// Network Management Response
 BOOL ISO8583MSG::IsNetworkMgmtResponse(void)
{
	// Message-Type-Identifier [12..15=4]    	
	return((memcmp((PBYTE)&chMsg[12], CISO_MSGTYPE_NETMGMT_RESP, 4) == 0));
}

// Es valido el Campo#?
 BOOL ISO8583MSG::IsValidField(WORD wField)
	{
	// Precondicion: Mensaje existente
	if(!cbMsgLen) 
		return (FALSE);

	// Precondicion: Campos validos
	if(!(wField >= 1 && wField <= CISOFIELDS)) 
		return (FALSE);

	// El Bitmap es una representacion hexadecimal {'0'..'9','A'..'F'},
	// tambien conocida como Bytemap cuando es en forma ASCII, como esta.
	// Cada digito indica la presencia o ausencia de campos, 
	// 4 por cada digito, y hasta un maximo de 64 campos, o sea
	// 16 posiciones. Si son dos Bitmaps, ocuparan 32 digitos.
	WORD wBitMapPos = 0;     // Posicion en BitMap (4 campos x c/u) 		
	BYTE bPosBitMap = 0x00;  // BitMap Binario de Posicion (4 bits)
	BYTE bBit       = 0x00;  // Bit en BitMap de Posicion {0,1,2,3}
	BYTE *pchBitMap = NULL;  // BitMap respectivo (Primario/Secundario)

	// Tratamiento como indice, 0..127, no como ISO 1..128: resto 1.
	wField--;

	// Posicion en BitMap? (4 campos cada posicion)
	wBitMapPos = (wField / 4);
	// Bit dentro del BitMap de Posicion (4 bits cada digito, 0..9,A..F)
	bBit = (BYTE)(wField % 4);
	
	// En que BitMap es, si c/u tiene 16 posiciones?
	if(wBitMapPos >= 0 && wBitMapPos <= 15) 
		{
		pchBitMap = &chMsg[16]; // Primary Bitmap
		}
	else
		{
		wBitMapPos -= BITMAP_STR_LEN;
		pchBitMap = &chMsg[32]; // Secondary Bitmap
		}

	// Chequeo de Posicion en BitMap
	if(!(wBitMapPos >= 0 && wBitMapPos <= 15))
		return (FALSE);

	// Bitmap ASCII (Bytemap) a Bitmap Binario (SWITCH por claridad en vez de restar 48='0')
	switch(pchBitMap[wBitMapPos])
		{
		// ASCII             // Decimal
		case '0': bPosBitMap = 0;  break; 
		case '1': bPosBitMap = 1;  break; 
		case '2': bPosBitMap = 2;  break; 
		case '3': bPosBitMap = 3;  break; 
		case '4': bPosBitMap = 4;  break; 
		case '5': bPosBitMap = 5;  break; 
		case '6': bPosBitMap = 6;  break; 
		case '7': bPosBitMap = 7;  break; 
		case '8': bPosBitMap = 8;  break; 
		case '9': bPosBitMap = 9;  break; 
		case 'A': bPosBitMap = 10; break; 
		case 'B': bPosBitMap = 11; break; 
		case 'C': bPosBitMap = 12; break; 
		case 'D': bPosBitMap = 13; break; 
		case 'E': bPosBitMap = 14; break; 
		case 'F': bPosBitMap = 15; break; 
		default:  return (FALSE);
		}
	
	// Esta presente el Bit en el BitMap de la Posicion?	
	// Se lo verifica con mascaras de bits predefinidas,
	// y con el operador AND
	switch(bBit)
		{
		case 0:  return ( 0x08 & bPosBitMap ) ? TRUE : FALSE; 
		case 1:  return ( 0x04 & bPosBitMap ) ? TRUE : FALSE; 
		case 2:  return ( 0x02 & bPosBitMap ) ? TRUE : FALSE; 
		case 3:  return ( 0x01 & bPosBitMap ) ? TRUE : FALSE; 
		default: return (FALSE);
		}	
	
	}

// Hacer valido/presente el Campo#
 BOOL ISO8583MSG::MakeValidField(BYTE chXMsg[], WORD wField)
	{
	// Precondicion: Mensaje existente
	if(!cbMsgLen) 
		return (FALSE);

	// Campos validos?
	if(!(wField >= 1 && wField <= CISOFIELDS)) 
		return (FALSE);

	// Ver comentarios de IsValidField()
	WORD wBitMapPos = 0;     // Posicion en BitMap (4 campos x c/u) 		
	BYTE bPosBitMap = 0x00;  // BitMap Binario de Posicion (4 bits)
	BYTE bBit       = 0x00;  // Bit en BitMap de Posicion {0,1,2,3}
	BYTE *pchBitMap = NULL;  // BitMap respectivo (Primario/Secundario)

	// Tratamiento como indice, 0..127, no como ISO 1..128
	wField--;

	// Posicion en BitMap? (4 campos cada posicion)
	wBitMapPos = (wField / 4);
	// Bit dentro del BitMap de Posicion (4 bits cada digito, 0..9,A..F)
	bBit = (BYTE)(wField % 4);
	
	// En que BitMap es, si c/u tiene 16 posiciones?
	if(wBitMapPos >= 0 && wBitMapPos <= 15) 
		{
		pchBitMap = &chXMsg[16]; // Primary Bitmap
		}
	else
		{
		wBitMapPos -= BITMAP_STR_LEN;
		pchBitMap = &chXMsg[32]; // Secondary Bitmap
		}

	// Chequeo de Posicion en BitMap
	if(!(wBitMapPos >= 0 && wBitMapPos <= 15))
		return (FALSE);

	// Bitmap ASCII (Bytemap) a Bitmap Binario (SWITCH por claridad en vez de restar 48='0')
	switch(pchBitMap[wBitMapPos])
		{
		// ASCII            // Decimal
		case '0': bPosBitMap = 0;  break; 
		case '1': bPosBitMap = 1;  break; 
		case '2': bPosBitMap = 2;  break; 
		case '3': bPosBitMap = 3;  break; 
		case '4': bPosBitMap = 4;  break; 
		case '5': bPosBitMap = 5;  break; 
		case '6': bPosBitMap = 6;  break; 
		case '7': bPosBitMap = 7;  break; 
		case '8': bPosBitMap = 8;  break; 
		case '9': bPosBitMap = 9;  break; 
		case 'A': bPosBitMap = 10; break; 
		case 'B': bPosBitMap = 11; break; 
		case 'C': bPosBitMap = 12; break; 
		case 'D': bPosBitMap = 13; break; 
		case 'E': bPosBitMap = 14; break; 
		case 'F': bPosBitMap = 15; break; 
		default:  return (FALSE);
		}
	
	// Hacer presente el Bit en el BitMap de la Posicion
	// Se lo hace con mascaras de bits predefinidas,
	// y con el operador INCLUSIVE-OR
	switch(bBit)
		{
		case 0:  bPosBitMap |= 0x08; break; 
		case 1:  bPosBitMap |= 0x04; break;  
		case 2:  bPosBitMap |= 0x02; break;  
		case 3:  bPosBitMap |= 0x01; break;  
		default: return (FALSE);
		}

	// Bitmap Binario a ASCII (SWITCH por claridad en vez de sumar 48='0')
	switch(bPosBitMap) 
		{
		// Decimal                     // ASCII
		case 0 : pchBitMap[wBitMapPos] = '0'; break; 
		case 1 : pchBitMap[wBitMapPos] = '1'; break; 
		case 2 : pchBitMap[wBitMapPos] = '2'; break; 
		case 3 : pchBitMap[wBitMapPos] = '3'; break; 
		case 4 : pchBitMap[wBitMapPos] = '4'; break; 
		case 5 : pchBitMap[wBitMapPos] = '5'; break; 
		case 6 : pchBitMap[wBitMapPos] = '6'; break; 
		case 7 : pchBitMap[wBitMapPos] = '7'; break; 
		case 8 : pchBitMap[wBitMapPos] = '8'; break; 
		case 9 : pchBitMap[wBitMapPos] = '9'; break; 
		case 10: pchBitMap[wBitMapPos] = 'A'; break; 
		case 11: pchBitMap[wBitMapPos] = 'B'; break; 
		case 12: pchBitMap[wBitMapPos] = 'C'; break; 
		case 13: pchBitMap[wBitMapPos] = 'D'; break; 
		case 14: pchBitMap[wBitMapPos] = 'E'; break; 
		case 15: pchBitMap[wBitMapPos] = 'F'; break; 
		default:  return (FALSE);
		}

	// Ok
	return (TRUE);
	
	}

// Hacer invalido/no-presente el Campo#
 BOOL ISO8583MSG::MakeInvalidField(BYTE chXMsg[], WORD wField)
	{
	// Precondicion: Mensaje existente
	if(!cbMsgLen) 
		return (FALSE);

	// Campos validos?
	if(!(wField >= 1 && wField <= CISOFIELDS)) 
		return (FALSE);

	// Ver comentarios de IsValidField()
	WORD wBitMapPos = 0;     // Posicion en BitMap (4 campos x c/u) 		
	BYTE bPosBitMap = 0x00;  // BitMap Binario de Posicion (4 bits)
	BYTE bBit       = 0x00;  // Bit en BitMap de Posicion {0,1,2,3}
	BYTE *pchBitMap = NULL;  // BitMap respectivo (Primario/Secundario)

	// Tratamiento como indice, 0..127, no como ISO 1..128
	wField--;

	// Posicion en BitMap? (4 campos cada posicion)
	wBitMapPos = (wField / 4);
	// Bit dentro del BitMap de Posicion (4 bits cada digito, 0..9,A..F)
	bBit = (BYTE)(wField % 4);
	
	// En que BitMap es, si c/u tiene 16 posiciones?
	if(wBitMapPos >= 0 && wBitMapPos <= 15) 
		{
		pchBitMap = &chXMsg[16]; // Primary Bitmap
		}
	else
		{
		wBitMapPos -= BITMAP_STR_LEN;
		pchBitMap = &chXMsg[32]; // Secondary Bitmap
		}

	// Chequeo de Posicion en BitMap
	if(!(wBitMapPos >= 0 && wBitMapPos <= 15))
		return (FALSE);

	// Bitmap ASCII (Bytemap) a Bitmap Binario (SWITCH por claridad en vez de restar 48='0')
	switch(pchBitMap[wBitMapPos])
		{
		// ASCII            // Decimal
		case '0': bPosBitMap = 0;  break; 
		case '1': bPosBitMap = 1;  break; 
		case '2': bPosBitMap = 2;  break; 
		case '3': bPosBitMap = 3;  break; 
		case '4': bPosBitMap = 4;  break; 
		case '5': bPosBitMap = 5;  break; 
		case '6': bPosBitMap = 6;  break; 
		case '7': bPosBitMap = 7;  break; 
		case '8': bPosBitMap = 8;  break; 
		case '9': bPosBitMap = 9;  break; 
		case 'A': bPosBitMap = 10; break; 
		case 'B': bPosBitMap = 11; break; 
		case 'C': bPosBitMap = 12; break; 
		case 'D': bPosBitMap = 13; break; 
		case 'E': bPosBitMap = 14; break; 
		case 'F': bPosBitMap = 15; break; 
		default:  return (FALSE);
		}
	
	// Hacer no-presente el Bit en el BitMap de la Posicion
	// Se lo hace con mascaras de bits predefinidas,
	// y con el operador EXCLUSIVE-OR
	switch(bBit)
		{
		case 0:  bPosBitMap ^= 0x08; break; 
		case 1:  bPosBitMap ^= 0x04; break;  
		case 2:  bPosBitMap ^= 0x02; break;  
		case 3:  bPosBitMap ^= 0x01; break;  
		default: return (FALSE);
		}

	// Bitmap Binario a ASCII (SWITCH por claridad en vez de sumar 48='0')
	switch(bPosBitMap)
		{
		// Decimal                     // ASCII
		case 0 : pchBitMap[wBitMapPos] = '0'; break; 
		case 1 : pchBitMap[wBitMapPos] = '1'; break; 
		case 2 : pchBitMap[wBitMapPos] = '2'; break; 
		case 3 : pchBitMap[wBitMapPos] = '3'; break; 
		case 4 : pchBitMap[wBitMapPos] = '4'; break; 
		case 5 : pchBitMap[wBitMapPos] = '5'; break; 
		case 6 : pchBitMap[wBitMapPos] = '6'; break; 
		case 7 : pchBitMap[wBitMapPos] = '7'; break; 
		case 8 : pchBitMap[wBitMapPos] = '8'; break; 
		case 9 : pchBitMap[wBitMapPos] = '9'; break; 
		case 10: pchBitMap[wBitMapPos] = 'A'; break; 
		case 11: pchBitMap[wBitMapPos] = 'B'; break; 
		case 12: pchBitMap[wBitMapPos] = 'C'; break; 
		case 13: pchBitMap[wBitMapPos] = 'D'; break; 
		case 14: pchBitMap[wBitMapPos] = 'E'; break; 
		case 15: pchBitMap[wBitMapPos] = 'F'; break; 
		default:  return (FALSE);
		}

	// Ok
	return (TRUE);
	
	}

// Es valido el mensaje?
 BOOL ISO8583MSG::IsValidMessage(void)
	{
	// Precondicion: Mensaje existente
	if(!cbMsgLen) 
		return (FALSE);

	/////////////////////////////////////////
	// Precondicion: Verificacion habilitada?
	if(!bCheckMessage) 
		return (TRUE);
	/////////////////////////////////////////

	// Compara cada parte del Mensaje
	// El Header esta Ok?
	if( !IsValidHeader() )
		return (FALSE);
	
	// El Tipo de Transaccion esta Ok?
	if( !IsValidTransactionType() )
		return (FALSE);

	// Los Datos de Usuario estan Ok?
	if( !IsValidUserData() )
		return (FALSE);

	// Ok
	return (TRUE);
	}

// Es valido el tipo de transaccion?
 BOOL ISO8583MSG::IsValidTransactionType(void)
	{
	// Precondicion: Mensaje existente
	if(!cbMsgLen) 
		return (FALSE);

	/////////////////////////////////////////
	// Precondicion: Verificacion habilitada?
	if(!bCheckMessage) 
		return (TRUE);
	/////////////////////////////////////////

	// El Tipo de Mensaje y BitMaps esta alguno Ok?
	if( IsValid200()  || IsValid205()  || IsValid210() ||
	    IsValid215()  || IsValid220()  || IsValid221() ||
		IsValid230()  || IsValid420()  || IsValid421() ||
		IsValid430()  || IsValid800()  || IsValid810()		 
	  ) return (TRUE);

	// Tipo Trx invalido
    return (FALSE);
	}

// Es valido el Header?
 BOOL ISO8583MSG::IsValidHeader(void)
	{
	// Precondicion: Mensaje existente
	if(!cbMsgLen) 
		return (FALSE);

	// Precondicion : Mensaje OBLIGATORIAMENTE con ISO-Header-Indicator. [0..2=3]
	if(memcmp((PBYTE)&chMsg[0], "ISO", 3) != 0)
		return (FALSE);

	/////////////////////////////////////////
	// Precondicion: Verificacion habilitada?
	if(!bCheckMessage) 
		return (TRUE);
	/////////////////////////////////////////

	// ISO-Header-Data [3..11=9]
	// Product-Id [3..4=2]
	if((memcmp((PBYTE)&chMsg[3], "00", 2) != 0) && // Base/Propietary
	   (memcmp((PBYTE)&chMsg[3], "01", 2) != 0) && // B24 ATM
	   (memcmp((PBYTE)&chMsg[3], "02", 2) != 0) && // B24 POS
	   (memcmp((PBYTE)&chMsg[3], "03", 2) != 0) && // B24 Teller
	   (memcmp((PBYTE)&chMsg[3], "08", 2) != 0) && // From Host Maintenance
	   (memcmp((PBYTE)&chMsg[3], "11", 2) != 0) && // B24 EMS
	   (memcmp((PBYTE)&chMsg[3], "12", 2) != 0))   // B24 EFTPOS
		return (FALSE);

	// Release-Number [5..6=2] (B24 Release 4.0="40", Release 5.1="51",...)
	if(!isdigit(chMsg[5]) || !isdigit(chMsg[6]))
	   return (FALSE);

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
偷窥少妇高潮呻吟av久久免费| 另类人妖一区二区av| 日本成人中文字幕在线视频| 国产999精品久久久久久| 欧美日韩日日夜夜| 国产精品国产成人国产三级| 紧缚奴在线一区二区三区| 色偷偷一区二区三区| 欧美精品一区二区不卡| 亚洲一区二区三区中文字幕| 成人av网站免费| 久久亚洲综合色一区二区三区| 午夜伊人狠狠久久| 在线观看av不卡| 中文字幕亚洲区| 成人一级视频在线观看| 91精品国产91综合久久蜜臀| 亚洲一区二区三区在线看| 99麻豆久久久国产精品免费优播| 久久久九九九九| 国产精品自在在线| 精品久久一二三区| 麻豆精品一区二区| 日韩午夜在线影院| 蜜桃视频一区二区三区在线观看| 欧美日韩一级黄| 性欧美大战久久久久久久久| 欧美这里有精品| 一区二区三区日韩欧美| 91麻豆精品秘密| 夜夜嗨av一区二区三区网页| 一本久久a久久免费精品不卡| 亚洲视频在线一区观看| 97久久人人超碰| 一区二区激情小说| 在线看日本不卡| 午夜精品久久久久久久久久久| 欧美日韩国产不卡| 日本成人在线视频网站| 51精品秘密在线观看| 日本不卡的三区四区五区| 欧美成人乱码一区二区三区| 精品一区二区三区久久久| 精品国产青草久久久久福利| 国产精品91一区二区| 中文字幕精品一区| 色婷婷av一区二区三区软件| 亚洲一区二区免费视频| 日韩一区二区电影在线| 国产一区二区三区在线观看免费| 久久这里只有精品视频网| 成人黄色片在线观看| 亚洲男人天堂av网| 欧美日本一区二区| 国产一区视频导航| 亚洲视频小说图片| 777亚洲妇女| 国产精品主播直播| 一二三区精品视频| 久久综合资源网| 一本色道久久综合狠狠躁的推荐| 婷婷久久综合九色国产成人 | 91视频一区二区| 一区二区三区免费观看| 日韩精品资源二区在线| kk眼镜猥琐国模调教系列一区二区| 亚洲最色的网站| 久久久久综合网| 精品污污网站免费看| 国产中文字幕精品| 午夜国产精品一区| 欧美国产欧美亚州国产日韩mv天天看完整| 91视频com| 国产一区二区在线影院| 一区二区日韩电影| 久久久综合精品| 欧美三级在线播放| jlzzjlzz国产精品久久| 精品一区二区三区久久| 亚洲成人av资源| 国产精品麻豆欧美日韩ww| 欧美日韩日日骚| 91在线丨porny丨国产| 久久99国产精品免费网站| 一区二区三区四区视频精品免费| 久久综合五月天婷婷伊人| 欧美系列一区二区| www.亚洲精品| 国产一区二区三区四区五区美女| 亚洲一区视频在线| 最新国产精品久久精品| 国产三级久久久| 日韩午夜av一区| 在线不卡欧美精品一区二区三区| 成人av免费在线观看| 精品一区二区三区在线播放| 午夜亚洲国产au精品一区二区 | 精品福利一二区| 欧美日韩一区二区电影| 99久久er热在这里只有精品66| 久久精品理论片| 日韩综合在线视频| 亚洲成年人网站在线观看| 亚洲精品视频在线观看网站| 国产精品国产馆在线真实露脸| 久久你懂得1024| 久久久久久久综合色一本| 日韩精品一区国产麻豆| 7777精品伊人久久久大香线蕉完整版 | 91蜜桃视频在线| 91色视频在线| 99re这里都是精品| 99天天综合性| 色综合久久综合网97色综合 | 亚洲精品欧美专区| 18欧美亚洲精品| 亚洲精品视频在线看| 亚洲国产综合视频在线观看| 亚洲另类在线视频| 性欧美大战久久久久久久久| 五月激情综合婷婷| 久久爱www久久做| 国产精品66部| av色综合久久天堂av综合| av在线免费不卡| 91国偷自产一区二区使用方法| 欧美性淫爽ww久久久久无| 欧美日韩1区2区| 日韩视频免费直播| 久久精品一区二区三区不卡| 日本一区二区在线不卡| 亚洲视频一区二区在线| 亚洲观看高清完整版在线观看| 丝袜国产日韩另类美女| 精品一区二区在线观看| 成人国产亚洲欧美成人综合网| 99在线热播精品免费| 欧美区视频在线观看| 8x福利精品第一导航| 久久综合色之久久综合| 中文字幕视频一区| 午夜av区久久| 国产成a人亚洲精品| 日本韩国一区二区三区视频| 欧美一区二区在线免费观看| 久久这里只精品最新地址| 亚洲色图欧洲色图| 日韩中文字幕一区二区三区| 国产精品123区| 色美美综合视频| 日韩精品一区二区三区在线观看| 中日韩av电影| 青青草原综合久久大伊人精品优势 | 久久精品无码一区二区三区| 日韩毛片精品高清免费| 婷婷丁香久久五月婷婷| 99视频在线观看一区三区| 91麻豆精品国产91久久久更新时间| 久久精品人人做| 日韩二区在线观看| 色综合久久久久| 久久久久九九视频| 丝袜亚洲精品中文字幕一区| 成人精品免费视频| 日韩三级在线观看| 亚洲一区在线观看视频| 成人成人成人在线视频| 日韩一区二区三区在线| 国产精品国产三级国产普通话蜜臀 | 国产福利一区二区三区视频在线| 在线精品亚洲一区二区不卡| 欧美激情在线观看视频免费| 日本不卡视频在线观看| 在线区一区二视频| 国产精品国产三级国产aⅴ中文| 久久精品国产网站| 91精品国产91久久久久久一区二区 | 老鸭窝一区二区久久精品| 91福利在线观看| 中文字幕亚洲精品在线观看| 国产成人精品aa毛片| 日韩精品一区二区三区四区| 视频一区二区三区在线| 欧美性生活影院| 一区二区三区精品视频| 97久久精品人人澡人人爽| 久久亚洲二区三区| 国模冰冰炮一区二区| 精品国产一区二区三区四区四 | 伊人一区二区三区| av中文一区二区三区| 中文字幕 久热精品 视频在线| 久久国产精品99久久久久久老狼 | 欧美性淫爽ww久久久久无| 亚洲欧美日韩系列| 一本大道久久a久久综合 | 亚洲青青青在线视频| 波多野结衣亚洲| 成人免费在线观看入口| 97久久久精品综合88久久|