/// <summary> /// /// </summary> /// <param name="param"></param> /// <param name="num">0 写入数据 1 写入类型 2 写入数据和类型</param> /// <returns></returns> public static int SetCardTypeByte(DistanceTypeParameter param, int num) { int typebyte = num; typebyte = BinaryHelper.SetIntegeSomeBit(typebyte, 7, param.Lock != 0); if (param.Distance < 4) { typebyte = BinaryHelper.SetIntegeSomeBit(typebyte, 6, true); for (int i = 0; i < 2; i++) { int distance = BinaryHelper.GetIntegerSomeBit(param.Distance, i); typebyte = BinaryHelper.SetIntegeSomeBit(typebyte, 4 + i, distance != 0); } } else { typebyte = BinaryHelper.SetIntegeSomeBit(typebyte, 6, false); } return(typebyte); }
public static DistanceTypeParameter DistanceType(int type) { DistanceTypeParameter parameter = new DistanceTypeParameter(); parameter.Battry = BinaryHelper.GetIntegerSomeBit(type, 3); int cardtype = BinaryHelper.GetBitToInt(type, 0, 3); if (cardtype == 0) { cardtype = BinaryHelper.GetBitToInt(type, 4, 4); parameter.CardType = (CardTypes)(cardtype += 1); } else { if (cardtype == 1 || cardtype == 5) { parameter.CardType = (CardTypes)0; } else if (cardtype == 2) { parameter.CardType = (CardTypes)1; } else if (cardtype == 3 || cardtype == 7) { parameter.CardType = (CardTypes)3; } } parameter.Lock = BinaryHelper.GetIntegerSomeBit(type, 7); parameter.Distance = BinaryHelper.GetIntegerSomeBit(type, 6); if (parameter.Distance == 1) { parameter.Distance = BinaryHelper.GetBitToInt(type, 4, 2); //parameter.Distance += 1; } else { parameter.Distance = 4; } return(parameter); }
public static int SetCardTypeByte(DistanceTypeParameter param) { return(SetCardTypeByte(param, 2)); }