package com.zy.common.HslCommunication.Core.Transfer; import com.zy.common.HslCommunication.BasicFramework.SoftBasic; import com.zy.common.HslCommunication.Core.Types.FunctionOperateExOne; import com.zy.common.HslCommunication.Core.Types.OperateResultExOne; public class ByteTransformHelper { /** * 结果转换操作的基础方法,需要支持类型,及转换的委托 * @param result 数据源 * @param translator 转换方式 * @param 结果类型 * @return 最新的结果对象 */ public static OperateResultExOne GetResultFromBytes( OperateResultExOne result, FunctionOperateExOne translator ) { OperateResultExOne tmp = new OperateResultExOne( ); try { if (result.IsSuccess) { tmp.Content = translator.Action( result.Content ); tmp.IsSuccess = result.IsSuccess; } tmp.CopyErrorFromOther( result ); } catch (Exception ex) { tmp.Message = "数据转化失败,源数据:" + SoftBasic.ByteToHexString( result.Content ) + " 消息:" + ex.getMessage(); } return tmp; } /** * 将指定的OperateResult类型转化 * @param result 原始的类型 * @param byteTransform 数据转换方法 * @return 转化后的类型 */ public static OperateResultExOne GetBoolResultFromBytes( OperateResultExOne result, IByteTransform byteTransform ) { return GetResultFromBytes( result, new FunctionOperateExOne(){ @Override public Boolean Action(byte[] content) { return byteTransform.TransBool( content, 0 ); } }); } /** * 将指定的OperateResult类型转化 * @param result 原始的类型 * @param byteTransform 数据转换方法 * @return 转化后的类型 */ public static OperateResultExOne GetByteResultFromBytes( OperateResultExOne result, IByteTransform byteTransform ) { return GetResultFromBytes( result,new FunctionOperateExOne(){ @Override public Byte Action(byte[] content) { return byteTransform.TransByte( content, 0 ); } }); } /** * 将指定的OperateResult类型转化 * @param result 原始的类型 * @param byteTransform 数据转换方法 * @return 转化后的类型 */ public static OperateResultExOne GetInt16ResultFromBytes( OperateResultExOne result, IByteTransform byteTransform ) { return GetResultFromBytes( result,new FunctionOperateExOne(){ @Override public Short Action(byte[] content) { return byteTransform.TransInt16( content, 0 ); } } ); } /** * 将指定的OperateResult类型转化 * @param result 原始的类型 * @param byteTransform 数据转换方法 * @return 转化后的类型 */ public static OperateResultExOne GetInt32ResultFromBytes( OperateResultExOne result, IByteTransform byteTransform ) { return GetResultFromBytes( result, new FunctionOperateExOne(){ @Override public Integer Action(byte[] content) { return byteTransform.TransInt32( content, 0 ); } }); } /** * 将指定的OperateResult类型转化 * @param result 原始的类型 * @param byteTransform 数据转换方法 * @return 转化后的类型 */ public static OperateResultExOne GetInt64ResultFromBytes( OperateResultExOne result, IByteTransform byteTransform ) { return GetResultFromBytes( result, new FunctionOperateExOne(){ @Override public Long Action(byte[] content) { return byteTransform.TransInt64( content, 0 ); } }); } /** * 将指定的OperateResult类型转化 * @param result 原始的类型 * @param byteTransform 数据转换方法 * @return 转化后的类型 */ public static OperateResultExOne GetSingleResultFromBytes( OperateResultExOne result, IByteTransform byteTransform ) { return GetResultFromBytes( result, new FunctionOperateExOne(){ @Override public Float Action(byte[] content) { return byteTransform.TransSingle( content, 0 ); } } ); } /** * 将指定的OperateResult类型转化 * @param result 原始的类型 * @param byteTransform 数据转换方法 * @return 转化后的类型 */ public static OperateResultExOne GetDoubleResultFromBytes( OperateResultExOne result, IByteTransform byteTransform ) { return GetResultFromBytes( result, new FunctionOperateExOne(){ @Override public Double Action(byte[] content) { return byteTransform.TransDouble( content, 0 ); } }); } /** * 将指定的OperateResult类型转化 * @param result 原始的类型 * @param byteTransform 数据转换方法 * @return 转化后的类型 */ public static OperateResultExOne GetStringResultFromBytes( OperateResultExOne result, IByteTransform byteTransform ) { return GetResultFromBytes( result, new FunctionOperateExOne(){ @Override public String Action(byte[] content) { return byteTransform.TransString( content, 0, content.length, "US-ASCII" ); } } ); } }