private void SaveServerFileListToPersistent() { string filePath = PathUtility.GetCombinePath(AppConst.Path.PresistentDataPath, AppConst.AssetBundleConfig.FileListFile); if (newFileInfoTable.Count > 0) { using (ByteBuffer buffer = new ByteBuffer()) { ValueParse.WriteValue(buffer, newFileInfoTable.Count, ValueParse.IntParse); foreach (KeyValuePair <string, UpdateFileInfo> updateFileInfo in newFileInfoTable) { ValueParse.WriteValue(buffer, updateFileInfo.Value.AssetBundleName, ValueParse.StringParse); ValueParse.WriteValue(buffer, updateFileInfo.Value.Length, ValueParse.IntParse); ValueParse.WriteValue(buffer, updateFileInfo.Value.Md5Code, ValueParse.IntParse); ValueParse.WriteValue(buffer, updateFileInfo.Value.ZipLength, ValueParse.IntParse); ValueParse.WriteValue(buffer, updateFileInfo.Value.ZipMd5Code, ValueParse.IntParse); } if (FileUtility.IsFileExist(filePath)) { FileUtility.DeleteFile(filePath); } File.WriteAllBytes(filePath, buffer.ToBytes()); } } }
private void InitInstallVersion(string fileUrl, byte[] bytes, string errorMessage) { if (bytes == null || bytes.Length == 0) { throw new Exception("local version.dat file is invalid"); } using (ByteBuffer buffer = new ByteBuffer(bytes)) { platform = Singleton <GameEntry> .GetInstance().GetComponent <ResourceComponent>().PlatformName = ValueParse.ReadValue(buffer, ValueParse.StringParse); installVersion = new Version.Version { MasterVersion = ValueParse.ReadValue(buffer, ValueParse.IntParse), MinorVersion = ValueParse.ReadValue(buffer, ValueParse.IntParse), RevisedVersion = ValueParse.ReadValue(buffer, ValueParse.IntParse) }; installZipDecompressFileCount = ValueParse.ReadValue(buffer, ValueParse.IntParse); installZipDecompressSize = ValueParse.ReadValue(buffer, ValueParse.LongParse); Singleton <GameEntry> .GetInstance().GetComponent <ResourceComponent>().AssetBundleVariant = ValueParse.ReadValue(buffer, ValueParse.StringParse); ValueParse.ReadValue(buffer, ValueParse.BoolParse); installZipDecompressPassword = ValueParse.ReadValue(buffer, ValueParse.StringParse); } installVersionIsDone = true; RefreshInstallDataInfo(); }
private void SaveServerVersionToPersistent() { string filePath = PathUtility.GetCombinePath(AppConst.Path.PresistentDataPath, AppConst.AssetBundleConfig.VersionFile); using (ByteBuffer buffer = new ByteBuffer()) { ValueParse.WriteValue(buffer, platform.ToString(), ValueParse.StringParse); ValueParse.WriteValue(buffer, serverVersion.MasterVersion, ValueParse.IntParse); ValueParse.WriteValue(buffer, serverVersion.MinorVersion, ValueParse.IntParse); ValueParse.WriteValue(buffer, serverVersion.RevisedVersion, ValueParse.IntParse); ValueParse.WriteValue(buffer, 0, ValueParse.IntParse); ValueParse.WriteValue(buffer, 0, ValueParse.LongParse); ValueParse.WriteValue(buffer, string.IsNullOrEmpty(Singleton <GameEntry> .GetInstance().GetComponent <ResourceComponent>() .AssetBundleVariant) ? "" : Singleton <GameEntry> .GetInstance().GetComponent <ResourceComponent>().AssetBundleVariant, ValueParse.StringParse); ValueParse.WriteValue(buffer, true, ValueParse.BoolParse); ValueParse.WriteValue(buffer, "", ValueParse.StringParse); if (FileUtility.IsFileExist(filePath)) { FileUtility.DeleteFile(filePath); } File.WriteAllBytes(filePath, buffer.ToBytes()); } }
/// <summary> /// 获取沙河目录下面的文件列表信息 /// </summary> /// <exception cref="Exception"></exception> private void LoadPresistentFilelist() { oldFileInfoTable.Clear(); string filePath = PathUtility.GetCombinePath(AppConst.Path.PresistentDataPath, AppConst.AssetBundleConfig.FileListFile); byte[] bytes = FileUtility.ReadAllBytes(filePath); if (bytes == null || bytes.Length == 0) { isUpdateDone = true; updateError("获取当前客户端的文件列表信息失败"); return; } using (ByteBuffer buffer = new ByteBuffer(bytes)) { fileCount = ValueParse.ReadValue(buffer, ValueParse.IntParse); for (int i = 0; i < fileCount; i++) { UpdateFileInfo updateFileInfo = new UpdateFileInfo { AssetBundleName = ValueParse.ReadValue(buffer, ValueParse.StringParse), Length = ValueParse.ReadValue(buffer, ValueParse.IntParse), Md5Code = ValueParse.ReadValue(buffer, ValueParse.IntParse), ZipLength = ValueParse.ReadValue(buffer, ValueParse.IntParse), ZipMd5Code = ValueParse.ReadValue(buffer, ValueParse.IntParse) }; oldFileInfoTable.Add(updateFileInfo.AssetBundleName, updateFileInfo); } } }
private void LoadServerVersionCallback(bool isOk, byte[] datas, string errorMessage) { if (isOk && datas != null && datas.Length > 0) { using (ByteBuffer buffer = new ByteBuffer(datas)) { platform = Singleton <GameEntry> .GetInstance().GetComponent <ResourceComponent>().PlatformName = ValueParse.ReadValue(buffer, ValueParse.StringParse); serverVersion = new Version.Version { MasterVersion = ValueParse.ReadValue(buffer, ValueParse.IntParse), MinorVersion = ValueParse.ReadValue(buffer, ValueParse.IntParse), RevisedVersion = ValueParse.ReadValue(buffer, ValueParse.IntParse) }; Singleton <GameEntry> .GetInstance().GetComponent <ResourceComponent>().AssetBundleVariant = ValueParse.ReadValue(buffer, ValueParse.StringParse); serverBundleIsZip = ValueParse.ReadValue(buffer, ValueParse.BoolParse); serverBundleZipPassword = ValueParse.ReadValue(buffer, ValueParse.StringParse); } VersionCompareResult compareResult = Version.Version.CompareResult(serverVersion, currentVersion, false); switch (compareResult) { case VersionCompareResult.Greater: updatePanel.ShowMessageBox(UpdatePanel.enMessageBoxType.YesNo, UpdateStringConfig.UpdateStatusBeginUpdate, UpdateStringConfig.UpdateStringHasFatalErrorNeedReinstall, () => { OpenAppStore(SingletonMono <GameFramework> .GetInstance().GetAppId()); if (Application.isPlaying) { Application.Quit(); } }, () => { if (Application.isPlaying) { Application.Quit(); } }); break; case VersionCompareResult.Equal: case VersionCompareResult.Less: UpdateResource(); break; } } else { //获取服务器的版本信息失败 isUpdateDone = true; updateError("获取服务器的版本信息失败"); } }
private static void WriteBytes(FileInfo fileInfo, string destName, Encoding encoding) { using (StreamReader streamReader = new StreamReader(fileInfo.FullName, encoding)) { string title = streamReader.ReadLine(); string comment = streamReader.ReadLine(); string mode = streamReader.ReadLine(); string[] modes = SplitLine(mode); bool[] useIndex = new bool[modes.Length]; for (int i = 0; i < modes.Length; i++) { useIndex[i] = modes[i].Equals("A") || modes[i].Equals("C"); } string type = streamReader.ReadLine(); if (string.IsNullOrEmpty(title) || string.IsNullOrEmpty(comment) || string.IsNullOrEmpty(type)) { return; } string[] titles = RemoveUnuse(SplitLine(title.TrimEnd(eof)), useIndex); string[] comments = RemoveUnuse(SplitLine(comment.TrimEnd(eof)), useIndex); string[] types = RemoveUnuse(SplitLine(type.TrimEnd(eof)), useIndex); using (ByteBuffer buffer = new ByteBuffer()) { int lineCount = 0; buffer.Seek(4, SeekOrigin.Begin); while (true) { string line = streamReader.ReadLine(); if (string.IsNullOrEmpty(line)) { break; } if (line.StartsWith("#")) { continue; } string[] colums = RemoveUnuse(SplitLine(line.TrimEnd(eof)), useIndex); for (int i = 0; i < colums.Length; i++) { AddParseValue(buffer, types[i], colums[i]); } lineCount++; } buffer.Seek(0, SeekOrigin.Begin); ValueParse.WriteValue(buffer, lineCount, ValueParse.IntParse); if (FileUtility.IsFileExist(destName)) { FileUtility.DeleteFile(destName); } FileUtility.WriteBytesToFile(destName, buffer.ToBytes()); } } }
protected bool ReadSequence <T>(BinaryReader stream, ref Sequence <T> v, ValueParse <T> parse) { v = new Sequence <T>(); T v1 = v[0]; T v2 = v[1]; parse.Read(stream, ref v1); parse.Read(stream, ref v2); v.Set(v1, v2); return(true); }
/// <summary> /// Decryptors the AES from string to Decimal. /// </summary> /// <param name="inputvalue">The inputvalue.</param> /// <returns>System.String.</returns> public static decimal DecryptorAesToDecimal(string inputvalue) { if (string.IsNullOrWhiteSpace(inputvalue)) { return(0); } var str = DecryptorAes(Convert.FromBase64String(inputvalue), CODETYPE.GetBytes(KEYARRY.CryptogramKey)); var res = ValueParse.GetDecimal(str); return(res); }
private List <JXInvoiceInfo> ToView(List <JXWarnContent> list) { var invoiceList = new List <JXInvoiceInfo>(); foreach (var item in list) { var invoice = new JXInvoiceInfo(); invoice.InvoiceCode = item.invoiceCode; invoice.InvoiceNo = item.invoiceNo; invoice.InvoiceDate = DateTime.ParseExact(item.kprq, "yyyyMMdd", System.Globalization.CultureInfo.CurrentCulture); invoice.XSFMC = item.sellerName; invoice.SE = ValueParse.GetDouble(item.taxAmount); invoice.HJBHSJE = ValueParse.GetDouble(item.invoiceAmount); invoiceList.Add(invoice); } return(invoiceList); }
protected bool ReadArray <T>(BinaryReader stream, ref T[] v, ValueParse <T> parse) { byte length = stream.ReadByte(); if (length > 0) { v = new T[length]; for (byte i = 0; i < length; ++i) { parse.Read(stream, ref v[i]); } } else { v = null; } return(true); }
/// <summary> /// 加载沙河目录的版本文件 /// </summary> /// <exception cref="Exception"></exception> private void LoadPresistentVersion() { string filePath = PathUtility.GetCombinePath(AppConst.Path.PresistentDataPath, AppConst.AssetBundleConfig.VersionFile); if (FileUtility.IsFileExist(filePath)) { try { using (ByteBuffer buffer = new ByteBuffer(FileUtility.ReadFile(filePath))) { platform = Singleton <GameEntry> .GetInstance().GetComponent <ResourceComponent>().PlatformName = ValueParse.ReadValue(buffer, ValueParse.StringParse); currentVersion = new Version.Version { MasterVersion = ValueParse.ReadValue(buffer, ValueParse.IntParse), MinorVersion = ValueParse.ReadValue(buffer, ValueParse.IntParse), RevisedVersion = ValueParse.ReadValue(buffer, ValueParse.IntParse) }; ValueParse.ReadValue(buffer, ValueParse.IntParse); ValueParse.ReadValue(buffer, ValueParse.LongParse); Singleton <GameEntry> .GetInstance().GetComponent <ResourceComponent>().AssetBundleVariant = ValueParse.ReadValue(buffer, ValueParse.StringParse); ValueParse.ReadValue(buffer, ValueParse.BoolParse); ValueParse.ReadValue(buffer, ValueParse.StringParse); } } catch (Exception e) { throw e; } } else { isUpdateDone = true; updateError("获取获取当前客户端版本信息失败"); } }
private List <JXInvoiceInfo> ToView(List <JXGxrzContent> list) { var invoiceList = new List <JXInvoiceInfo>(); foreach (var item in list) { var invoice = new JXInvoiceInfo(); invoice.InvoiceCode = item.invoiceCode; invoice.InvoiceNo = item.invoiceNo; invoice.InvoiceDate = DateTime.ParseExact(item.kprq, "yyyyMMdd", System.Globalization.CultureInfo.CurrentCulture); invoice.XSFSH = item.sellerTaxNo; invoice.XSFMC = item.sellerName; invoice.YQTXBZ = item.warnFlag == "true"; invoice.SE = ValueParse.GetDouble(item.taxAmount); invoice.HJBHSJE = ValueParse.GetDouble(item.invoiceAmount); int nfpzt = 0; Int32.TryParse(item.fpzt, out nfpzt); invoice.InvoiceStateDesc = ((InvoiceStatus)nfpzt).GetDescription();//"加载中..."; invoiceList.Add(invoice); } return(invoiceList); }
/// <summary> /// 加载server上的filelist callback /// </summary> /// <param name="isOk"></param> /// <param name="datas"></param> /// <param name="errorMessage"></param> private void LoadServerFileListCallback(bool isOk, byte[] datas, string errorMessage) { newFileInfoTable.Clear(); if (isOk && datas != null && datas.Length > 0) { using (ByteBuffer buffer = new ByteBuffer(datas)) { fileCount = ValueParse.ReadValue(buffer, ValueParse.IntParse); for (int i = 0; i < fileCount; i++) { UpdateFileInfo updateFileInfo = new UpdateFileInfo { AssetBundleName = ValueParse.ReadValue(buffer, ValueParse.StringParse), Length = ValueParse.ReadValue(buffer, ValueParse.IntParse), Md5Code = ValueParse.ReadValue(buffer, ValueParse.IntParse), ZipLength = ValueParse.ReadValue(buffer, ValueParse.IntParse), ZipMd5Code = ValueParse.ReadValue(buffer, ValueParse.IntParse) }; newFileInfoTable.Add(updateFileInfo.AssetBundleName, updateFileInfo); } } DeleteUselessFiles(); GetDownloadFileList(); if (!isUpdateDone) { BeginDownFile(); return; //检查磁盘空间是否满足大小 todo if ((long)Math.Ceiling(totalDownloadSize * 1.1f) > MobileSystemInfo.GetFreeDiskSpace()) { //磁盘空间不足 } else { if (MobileSystemInfo.NetAvailable) { //运营商网络 if (MobileSystemInfo.IsCarrier) { updatePanel.ShowMessageBox(UpdatePanel.enMessageBoxType.CancelOk, UpdateStringConfig.UpdateStatusBeginUpdate, UpdateStringConfig.UpdateStringHasErrorNotWifi, BeginDownFile, () => { if (Application.isPlaying) { Application.Quit(); } }, UpdateStringConfig.UpdateStatusWifiTips, FormatDownloadSize(totalDownloadSize)); } // wi-fi 网络 else if (MobileSystemInfo.IsWifi) { //弹出提示框询问是否下载 updatePanel.ShowMessageBox(UpdatePanel.enMessageBoxType.CancelOk, UpdateStringConfig.UpdateStatusBeginUpdate, UpdateStringConfig.UpdateStateStartUpdateInfo, BeginDownFile, () => { if (Application.isPlaying) { Application.Quit(); } }, UpdateStringConfig.UpdateStatusWifiTips, FormatDownloadSize(totalDownloadSize)); } } } } } else { //获取服务器的FileList失败 isUpdateDone = true; updateError("获取服务器最新版本的文件列表信息失败"); } }
private static void ProcessPackage(string workingPath, string tempworkingPath, string packagePath, AssetBundleBuildRule.Platform platform) { AssetBundleFileDatas.Clear(); string packageVersionPath = $"{packagePath}{AppConst.AssetBundleConfig.VersionFile}"; string assetbundleZipPath = $"{packagePath}{AppConst.AssetBundleConfig.AssetBundlePackageFile}"; string fileInfoPath = $"{packagePath}{AppConst.AssetBundleConfig.FileListFile}"; string[] allFiles = Directory.GetFiles(workingPath, "*", SearchOption.AllDirectories); List <string> allAssetBundleFiles = new List <string>(); foreach (string tempFile in allFiles) { string path = tempFile.Replace("\\", "/"); if (Path.GetExtension(path) == ".manifest") { continue; } allAssetBundleFiles.Add(path); } EditorUtility.ClearProgressBar(); int index = 0; int count = allAssetBundleFiles.Count; long sizeCount = 0; foreach (string assetBundleFile in allAssetBundleFiles) { index++; EditorUtility.DisplayProgressBar("复制AssetBundle", "复制AssetBundle文件", (float)index / (float)count); string target = assetBundleFile.Replace(workingPath, tempworkingPath); string targetPath = Path.GetDirectoryName(target); if (!Directory.Exists(targetPath)) { if (targetPath != null) { Directory.CreateDirectory(targetPath); } } File.Copy(assetBundleFile, target); AssetBundleFileData assetBundleFileData = new AssetBundleFileData(); byte[] srcBytes = File.ReadAllBytes(assetBundleFile); int srcLength = srcBytes.Length; sizeCount += srcBytes.Length; byte[] srcMd5Bytes = MD5Utility.GetMd5Bytes(srcBytes); int srcMd5Code = BitConverter.ToInt32(srcMd5Bytes, 0); string assetBundleName = target.Replace(tempworkingPath, ""); assetBundleFileData.AssetBundleName = assetBundleName; assetBundleFileData.Length = srcLength; assetBundleFileData.Md5Code = srcMd5Code; assetBundleFileData.ZipLength = 0; assetBundleFileData.ZipMd5Code = 0; AssetBundleFileDatas.Add(assetBundleFileData); } EditorUtility.ClearProgressBar(); ZipUtility.CompressFolder(assetbundleZipPath, tempworkingPath, "*", AssetBundleRule.ZipPassWord); using (ByteBuffer buffer = new ByteBuffer()) { ValueParse.WriteValue(buffer, platform.ToString(), ValueParse.StringParse); ValueParse.WriteValue(buffer, CurrentVersion.MasterVersion, ValueParse.IntParse); ValueParse.WriteValue(buffer, CurrentVersion.MinorVersion, ValueParse.IntParse); ValueParse.WriteValue(buffer, CurrentVersion.RevisedVersion, ValueParse.IntParse); ValueParse.WriteValue(buffer, allAssetBundleFiles.Count, ValueParse.IntParse); ValueParse.WriteValue(buffer, sizeCount, ValueParse.LongParse); ValueParse.WriteValue(buffer, string.IsNullOrEmpty(AssetBundleRule.AssetBundleVariant) ? "" : AssetBundleRule.AssetBundleVariant, ValueParse.StringParse); ValueParse.WriteValue(buffer, AssetBundleRule.ZipSelected, ValueParse.BoolParse); ValueParse.WriteValue(buffer, string.IsNullOrEmpty(AssetBundleRule.ZipPassWord) ? "" : AssetBundleRule.ZipPassWord, ValueParse.StringParse); File.WriteAllBytes(packageVersionPath, buffer.ToBytes()); } using (ByteBuffer buffer = new ByteBuffer()) { ValueParse.WriteValue(buffer, AssetBundleFileDatas.Count, ValueParse.IntParse); foreach (AssetBundleFileData assetBundleFileData in AssetBundleFileDatas) { ValueParse.WriteValue(buffer, assetBundleFileData.AssetBundleName, ValueParse.StringParse); ValueParse.WriteValue(buffer, assetBundleFileData.Length, ValueParse.IntParse); ValueParse.WriteValue(buffer, assetBundleFileData.Md5Code, ValueParse.IntParse); ValueParse.WriteValue(buffer, assetBundleFileData.ZipLength, ValueParse.IntParse); ValueParse.WriteValue(buffer, assetBundleFileData.ZipMd5Code, ValueParse.IntParse); } File.WriteAllBytes(fileInfoPath, buffer.ToBytes()); } }
protected bool Read <T>(BinaryReader stream, ref T v, ValueParse <T> parse) { parse.Read(stream, ref v); return(true); }
private static void AddParseValue(ByteBuffer buffer, string type, string data) { if (type == "byte") { byte value = 0; byte.TryParse(data, out value); ValueParse.WriteValue(buffer, value, ValueParse.ByteParse); } else if (type == "sbyte") { sbyte value = 0; sbyte.TryParse(data, out value); ValueParse.WriteValue(buffer, value, ValueParse.SByteParse); } else if (type == "bool") { bool value = false; bool.TryParse(data, out value); ValueParse.WriteValue(buffer, value, ValueParse.BoolParse); } else if (type == "char") { char value = ' '; char.TryParse(data, out value); ValueParse.WriteValue(buffer, value, ValueParse.CharParse); } else if (type == "short") { short value = 0; short.TryParse(data, out value); ValueParse.WriteValue(buffer, value, ValueParse.ShortParse); } else if (type == "ushort") { ushort value = 0; ushort.TryParse(data, out value); ValueParse.WriteValue(buffer, value, ValueParse.UShortParse); } else if (type == "uint") { uint value = 0; uint.TryParse(data, out value); ValueParse.WriteValue(buffer, value, ValueParse.UIntParse); } else if (type == "int") { int value = 0; int.TryParse(data, out value); ValueParse.WriteValue(buffer, value, ValueParse.IntParse); } else if (type == "ulong") { ulong value = 0; ulong.TryParse(data, out value); ValueParse.WriteValue(buffer, value, ValueParse.ULongParse); } else if (type == "long") { long value = 0; long.TryParse(data, out value); ValueParse.WriteValue(buffer, value, ValueParse.LongParse); } else if (type == "float") { float value = 0; float.TryParse(data, out value); ValueParse.WriteValue(buffer, value, ValueParse.FloatParse); } else if (type == "double") { double value = 0; double.TryParse(data, out value); ValueParse.WriteValue(buffer, value, ValueParse.DoubleParse); } else if (type == "string") { ValueParse.WriteValue(buffer, data, ValueParse.StringParse); } else if (type == "vector2") { string[] arr = data.Split('@'); Vector2 value = new Vector2(float.Parse(arr[0]), float.Parse(arr[1])); ValueParse.WriteValue(buffer, value, ValueParse.Vector2Parse); } else if (type == "vector3") { string[] arr = data.Split('@'); Vector3 value = new Vector3(float.Parse(arr[0]), float.Parse(arr[1]), float.Parse(arr[2])); ValueParse.WriteValue(buffer, value, ValueParse.Vector3Parse); } else if (type == "vector4") { string[] arr = data.Split('@'); Vector4 value = new Vector4(float.Parse(arr[0]), float.Parse(arr[1]), float.Parse(arr[2]), float.Parse(arr[3])); ValueParse.WriteValue(buffer, value, ValueParse.Vector4Parse); } else if (type == "color32") { string[] arr = data.Split('@'); Color32 value = new Color32(byte.Parse(arr[0]), byte.Parse(arr[1]), byte.Parse(arr[2]), byte.Parse(arr[3])); ValueParse.WriteValue(buffer, value, ValueParse.Color32Parse); } else if (type == "color") { string[] arr = data.Split('@'); Color value = new Color(float.Parse(arr[0]), float.Parse(arr[1]), float.Parse(arr[2]), float.Parse(arr[3])); ValueParse.WriteValue(buffer, value, ValueParse.ColorParse); } else if (type == "datetime") { DateTime value = new DateTime(long.Parse(data)); ValueParse.WriteValue(buffer, value, ValueParse.DateTimeParse); } else if (type == "rect") { string[] arr = data.Split('@'); Rect value = new Rect(float.Parse(arr[0]), float.Parse(arr[1]), float.Parse(arr[2]), float.Parse(arr[3])); ValueParse.WriteValue(buffer, value, ValueParse.RectParse); } else if (type == "quaternion") { string[] arr = data.Split('@'); Quaternion value = new Quaternion(float.Parse(arr[0]), float.Parse(arr[1]), float.Parse(arr[2]), float.Parse(arr[3])); ValueParse.WriteValue(buffer, value, ValueParse.QuaternionParse); } else if (type.StartsWith("list")) { string listType = type.Split('|')[1]; string[] datas = data.Split('|'); if (datas.Length > 0) { ValueParse.WriteValue(buffer, (ushort)datas.Length, ValueParse.UShortParse); for (int i = 0; i < datas.Length; i++) { AddParseValue(buffer, listType, datas[i]); } } else { ValueParse.WriteValue(buffer, (ushort)0, ValueParse.UShortParse); } } else if (type.StartsWith("dirc")) { string ktype = type.Split('|')[1]; string vtype = type.Split('|')[2]; string[] datas = data.Split('|'); if (datas.Length > 0) { ValueParse.WriteValue(buffer, (ushort)datas.Length, ValueParse.UShortParse); foreach (string date in datas) { var key = date.Split(':')[0]; var value = date.Split(':')[1]; AddParseValue(buffer, ktype, key); AddParseValue(buffer, vtype, value); } } else { ValueParse.WriteValue(buffer, (ushort)0, ValueParse.UShortParse); } } }