private void CreateFileList() { JsonObject fileListJo = new JsonObject(); string manifestPath = OUTPUT_PATH + "/" + mModuleName + "/" + ConstValue.MANIFEST_NAME + "." + ConstValue.ASSET_BUNDLE_VARIANT; FileInfo manifestFile = new FileInfo(manifestPath); JsonObject manifestInfoJo = new JsonObject(); manifestInfoJo.Add(ConstValue.FILE_LIST_SIZE_KEY, manifestFile.Length); manifestInfoJo.Add(ConstValue.FILE_LIST_MD5_KEY, GetMd5(manifestFile)); fileListJo.Add(mModuleName.ToLower() + "/" + ConstValue.MANIFEST_NAME + "." + ConstValue.ASSET_BUNDLE_VARIANT, manifestInfoJo); AssetBundle manifestAssetBundle = AssetBundle.LoadFromFile(manifestPath); if (manifestAssetBundle) { AssetBundleManifest manifest = manifestAssetBundle.LoadAsset <AssetBundleManifest>("AssetBundleManifest"); if (manifest) { foreach (string bundleName in manifest.GetAllAssetBundles()) { FileInfo file = new FileInfo(OUTPUT_PATH + "/" + bundleName); JsonObject fileInfoJo = new JsonObject(); fileInfoJo.Add(ConstValue.FILE_LIST_SIZE_KEY, file.Exists ? file.Length : 0); fileInfoJo.Add(ConstValue.FILE_LIST_MD5_KEY, file.Exists ? GetMd5(file) : ""); fileListJo.Add(bundleName, fileInfoJo); } } manifestAssetBundle.Unload(true); } foreach (string copyDir in s_CopyDirs) { DirectoryInfo dir = new DirectoryInfo(OUTPUT_PATH + "/" + mModuleName + "/" + copyDir); List <FileInfo> fileList = dir.Exists ? GetAllFiles(dir, ".", ".meta") : new List <FileInfo>(); foreach (FileInfo file in fileList) { JsonObject fileInfoJo = new JsonObject(); fileInfoJo.Add(ConstValue.FILE_LIST_SIZE_KEY, file.Exists ? file.Length : 0); fileInfoJo.Add(ConstValue.FILE_LIST_MD5_KEY, file.Exists ? GetMd5(file) : ""); string relativePath = copyDir + "/" + file.FullName.Substring(dir.FullName.Length + 1).Replace("\\", "/"); fileListJo.Add(relativePath, fileInfoJo); } } string fileListStr = ToFileListString(fileListJo); byte[] fileListBytes = ConvertExt.StringToBytes(fileListStr); FileManager.Write(OUTPUT_PATH + "/" + mModuleName + "/" + ConstValue.FILE_LIST_NAME, fileListBytes); m_AssetsChanged = true; }
private void CreateVersion() { JsonObject versionInfoJo = new JsonObject(); versionInfoJo.Add(ConstValue.MODULE_KEY, mModuleName); versionInfoJo.Add(ConstValue.VERSION_KEY, ConstValue.VERSION); byte[] versionInfoBytes = ConvertExt.StringToBytes(versionInfoJo.ToString()); FileManager.Write(OUTPUT_PATH + "/" + mModuleName + "/" + ConstValue.VERSION_NAME, versionInfoBytes); m_AssetsChanged = true; }
public void TestToByte() { Assert.AreEqual(0, ConvertExt.ToByte("0", 13)); Assert.AreEqual(1, ConvertExt.ToByte("1", 3)); Assert.AreEqual(120, ConvertExt.ToByte("60", 20)); Assert.AreEqual(127, ConvertExt.ToByte("9a", 13)); Assert.AreEqual(128, ConvertExt.ToByte("4c", 29)); Assert.AreEqual(166, ConvertExt.ToByte("4m", 36)); Assert.AreEqual(254, ConvertExt.ToByte("9b", 27)); Assert.AreEqual(255, ConvertExt.ToByte("9c", 27)); AssertExt.ThrowsException(() => ConvertExt.ToByte("38o7", 27), typeof(OverflowException)); }
public void TestToInt64() { Assert.AreEqual(0L, ConvertExt.ToInt64("0", 13)); Assert.AreEqual(1L, ConvertExt.ToInt64("1", 3)); Assert.AreEqual(14720L, ConvertExt.ToInt64("1Gg0", 20)); Assert.AreEqual(9223372036854775807L, ConvertExt.ToInt64("10B269549075433C37", 13)); Assert.AreEqual(-1L, ConvertExt.ToInt64("4Eo8hfam6fllmo", 27)); Assert.AreEqual(-2L, ConvertExt.ToInt64("4Eo8hfam6fllmn", 27)); Assert.AreEqual(-8071017880399937603L, ConvertExt.ToInt64("26tvjyybszf7h", 36)); Assert.AreEqual(-9223372036854775808L, ConvertExt.ToInt64("q1se8f0m04isc", 29)); AssertExt.ThrowsException(() => ConvertExt.ToInt64("4Eo8hfam6fllmp", 27), typeof(OverflowException)); }
public void TestToInt32() { Assert.AreEqual(0, ConvertExt.ToInt32("0", 13)); Assert.AreEqual(1, ConvertExt.ToInt32("1", 3)); Assert.AreEqual(14720, ConvertExt.ToInt32("1Gg0", 20)); Assert.AreEqual(2147483647, ConvertExt.ToInt32("282ba4aaa", 13)); Assert.AreEqual(-1, ConvertExt.ToInt32("b28jpdl", 27)); Assert.AreEqual(-2, ConvertExt.ToInt32("b28jpdk", 27)); Assert.AreEqual(-1235678902, ConvertExt.ToInt32("1elf616", 36)); Assert.AreEqual(-2147483648, ConvertExt.ToInt32("3hk7988", 29)); AssertExt.ThrowsException(() => ConvertExt.ToInt32("b28jpdm", 27), typeof(OverflowException)); }
public void TestToInt16() { Assert.AreEqual(0, ConvertExt.ToInt16("0", 13)); Assert.AreEqual(1, ConvertExt.ToInt16("1", 3)); Assert.AreEqual(14720, ConvertExt.ToInt16("1Gg0", 20)); Assert.AreEqual(32767, ConvertExt.ToInt16("11bb7", 13)); Assert.AreEqual(-1, ConvertExt.ToInt16("38o6", 27)); Assert.AreEqual(-2, ConvertExt.ToInt16("38o5", 27)); Assert.AreEqual(-21458, ConvertExt.ToInt16("y0e", 36)); Assert.AreEqual(-32768, ConvertExt.ToInt16("19rr", 29)); AssertExt.ThrowsException(() => ConvertExt.ToInt16("38o7", 27), typeof(OverflowException)); }
public void TestToUInt64() { Assert.AreEqual(0UL, ConvertExt.ToUInt64("0", 13)); Assert.AreEqual(1UL, ConvertExt.ToUInt64("1", 3)); Assert.AreEqual(14720UL, ConvertExt.ToUInt64("1Gg0", 20)); Assert.AreEqual(9223372036854775807UL, ConvertExt.ToUInt64("10B269549075433C37", 13)); Assert.AreEqual(9223372036854775808UL, ConvertExt.ToUInt64("q1se8f0m04isc", 29)); Assert.AreEqual(10375726193309614013UL, ConvertExt.ToUInt64("26tvjyybszf7h", 36)); Assert.AreEqual(18446744073709551614UL, ConvertExt.ToUInt64("4Eo8hfam6fllmn", 27)); Assert.AreEqual(18446744073709551615UL, ConvertExt.ToUInt64("4Eo8hfam6fllmo", 27)); AssertExt.ThrowsException(() => ConvertExt.ToUInt64("4Eo8hfam6fllmp", 27), typeof(OverflowException)); }
public void TestToUInt32() { Assert.AreEqual(0U, ConvertExt.ToUInt32("0", 13)); Assert.AreEqual(1U, ConvertExt.ToUInt32("1", 3)); Assert.AreEqual(14720U, ConvertExt.ToUInt32("1Gg0", 20)); Assert.AreEqual(2147483647U, ConvertExt.ToUInt32("282ba4aaa", 13)); Assert.AreEqual(2147483648U, ConvertExt.ToUInt32("3hk7988", 29)); Assert.AreEqual(3059288394U, ConvertExt.ToUInt32("1elf616", 36)); Assert.AreEqual(4294967294U, ConvertExt.ToUInt32("b28jpdk", 27)); Assert.AreEqual(4294967295U, ConvertExt.ToUInt32("b28jpdl", 27)); AssertExt.ThrowsException(() => ConvertExt.ToUInt32("b28jpdm", 27), typeof(OverflowException)); }
bool ExportVersion(string moduleName) { int streamingHotVersion = 0; int cdnHotVersion = 0; if (FileManager.IsFileExist(ConstValue.STREAMING_DIR_PATH + "/" + moduleName + "/" + ConstValue.VERSION_NAME)) { byte[] streamingVersionBytes = FileManager.Read(ConstValue.STREAMING_DIR_PATH + "/" + moduleName + "/" + ConstValue.VERSION_NAME); string streamingVersionStr = streamingVersionBytes == null ? null : ConvertExt.BytesToString(streamingVersionBytes); //Debug.LogError("streamingVersionStr = " + streamingVersionStr); JsonObject streamingVersionInfoJo = StringParser.StringToJo(streamingVersionStr, false); m_streamingVersion = JsonParser.JoItemToString(streamingVersionInfoJo, ConstValue.VERSION_KEY, ConstValue.VERSION); //Debug.LogError("streaming version: " + m_streamingVersion); string[] streamingVersions = m_streamingVersion.Split('.'); streamingHotVersion = StringParser.StringToInt(streamingVersions[2]); } else { return(false); } if (FileManager.IsFileExist(m_CdnNativePath + "/" + moduleName + "/" + ConstValue.VERSION_NAME)) { byte[] cdnVersionBytes = FileManager.Read(m_CdnNativePath + "/" + moduleName + "/" + ConstValue.VERSION_NAME); string cdnVersionStr = cdnVersionBytes == null ? null : ConvertExt.BytesToString(cdnVersionBytes); //Debug.LogError("cdnVersionStr = " + cdnVersionStr); JsonObject cdnVersionInfoJo = StringParser.StringToJo(cdnVersionStr, false); m_CdnVersion = JsonParser.JoItemToString(cdnVersionInfoJo, ConstValue.VERSION_KEY, ConstValue.VERSION); //Debug.LogError("Cdn version: " + m_CdnVersion); string[] cdnVersions = m_CdnVersion.Split('.'); cdnHotVersion = StringParser.StringToInt(cdnVersions[2]); } else { return(false); } if (streamingHotVersion <= cdnHotVersion) { return(false); } FileCopyTo(ConstValue.STREAMING_DIR_PATH + "/" + moduleName + "/" + ConstValue.VERSION_NAME, m_PackagePath + "/" + moduleName + "/" + ConstValue.VERSION_NAME); return(true); }
void ExportAssetBundles(string moduleName) { if (FileManager.IsFileExist(ConstValue.STREAMING_DIR_PATH + "/" + moduleName + "/" + ConstValue.FILE_LIST_NAME)) { byte[] streamingFileListBytes = FileManager.Read(ConstValue.STREAMING_DIR_PATH + "/" + moduleName + "/" + ConstValue.FILE_LIST_NAME); string streamingFileListStr = streamingFileListBytes == null ? null : ConvertExt.BytesToString(streamingFileListBytes); m_StreamingFileList = StringParser.StringToJo(streamingFileListStr, false); } else { m_StreamingFileList = new JsonObject(); } if (FileManager.IsFileExist(m_CdnNativePath + "/" + moduleName + "/" + ConstValue.FILE_LIST_NAME)) { byte[] cdnFileListBytes = FileManager.Read(m_CdnNativePath + "/" + moduleName + "/" + ConstValue.FILE_LIST_NAME); string cdnFileListStr = cdnFileListBytes == null ? null : ConvertExt.BytesToString(cdnFileListBytes); m_CdnFileList = StringParser.StringToJo(cdnFileListStr, false); } else { m_CdnFileList = new JsonObject(); } foreach (string fileName in m_StreamingFileList.Keys) { string srcPath = ConstValue.STREAMING_DIR_PATH + "/" + fileName; string destPath = m_PackagePath + "/" + fileName; JsonObject streamingInfoJo = JsonParser.JoItemToJo(m_StreamingFileList, fileName); string streamingMd5 = JsonParser.JoItemToString(streamingInfoJo, ConstValue.FILE_LIST_MD5_KEY); if (m_CdnFileList.ContainsKey(fileName)) { JsonObject cdnInfoJo = JsonParser.JoItemToJo(m_CdnFileList, fileName); string cdnMd5 = JsonParser.JoItemToString(cdnInfoJo, ConstValue.FILE_LIST_MD5_KEY); if (!string.Equals(streamingMd5, cdnMd5)) { FileCopyTo(srcPath, destPath); } } else { FileCopyTo(srcPath, destPath); } } AssetDatabase.Refresh(); }
public void TestToInt64() { Assert.AreEqual(0L, ConvertExt.ToInt64("0", 13)); Assert.AreEqual(1L, ConvertExt.ToInt64("1", 3)); Assert.AreEqual(14720L, ConvertExt.ToInt64("1Gg0", 20)); Assert.AreEqual(9223372036854775807L, ConvertExt.ToInt64("10B269549075433C37", 13)); Assert.AreEqual(-1L, ConvertExt.ToInt64("4Eo8hfam6fllmo", 27)); Assert.AreEqual(-2L, ConvertExt.ToInt64("4Eo8hfam6fllmn", 27)); Assert.AreEqual(-8071017880399937603L, ConvertExt.ToInt64("26tvjyybszf7h", 36)); Assert.AreEqual(-9223372036854775808L, ConvertExt.ToInt64("q1se8f0m04isc", 29)); bool hasException = false; try { ConvertExt.ToInt64("4Eo8hfam6fllmp", 27); } catch (OverflowException) { hasException = true; } Assert.IsTrue(hasException, "没有正确引发 OverflowException。"); }
public void TestToInt32() { Assert.AreEqual(0, ConvertExt.ToInt32("0", 13)); Assert.AreEqual(1, ConvertExt.ToInt32("1", 3)); Assert.AreEqual(14720, ConvertExt.ToInt32("1Gg0", 20)); Assert.AreEqual(2147483647, ConvertExt.ToInt32("282ba4aaa", 13)); Assert.AreEqual(-1, ConvertExt.ToInt32("b28jpdl", 27)); Assert.AreEqual(-2, ConvertExt.ToInt32("b28jpdk", 27)); Assert.AreEqual(-1235678902, ConvertExt.ToInt32("1elf616", 36)); Assert.AreEqual(-2147483648, ConvertExt.ToInt32("3hk7988", 29)); bool hasException = false; try { ConvertExt.ToInt32("b28jpdm", 27); } catch (OverflowException) { hasException = true; } Assert.IsTrue(hasException, "没有正确引发 OverflowException。"); }
public void TestToInt16() { Assert.AreEqual(0, ConvertExt.ToInt16("0", 13)); Assert.AreEqual(1, ConvertExt.ToInt16("1", 3)); Assert.AreEqual(14720, ConvertExt.ToInt16("1Gg0", 20)); Assert.AreEqual(32767, ConvertExt.ToInt16("11bb7", 13)); Assert.AreEqual(-1, ConvertExt.ToInt16("38o6", 27)); Assert.AreEqual(-2, ConvertExt.ToInt16("38o5", 27)); Assert.AreEqual(-21458, ConvertExt.ToInt16("y0e", 36)); Assert.AreEqual(-32768, ConvertExt.ToInt16("19rr", 29)); bool hasException = false; try { ConvertExt.ToInt16("38o7", 27); } catch (OverflowException) { hasException = true; } Assert.IsTrue(hasException, "没有正确引发 OverflowException。"); }
public void TestToUInt64() { Assert.AreEqual(0UL, ConvertExt.ToUInt64("0", 13)); Assert.AreEqual(1UL, ConvertExt.ToUInt64("1", 3)); Assert.AreEqual(14720UL, ConvertExt.ToUInt64("1Gg0", 20)); Assert.AreEqual(9223372036854775807UL, ConvertExt.ToUInt64("10B269549075433C37", 13)); Assert.AreEqual(9223372036854775808UL, ConvertExt.ToUInt64("q1se8f0m04isc", 29)); Assert.AreEqual(10375726193309614013UL, ConvertExt.ToUInt64("26tvjyybszf7h", 36)); Assert.AreEqual(18446744073709551614UL, ConvertExt.ToUInt64("4Eo8hfam6fllmn", 27)); Assert.AreEqual(18446744073709551615UL, ConvertExt.ToUInt64("4Eo8hfam6fllmo", 27)); bool hasException = false; try { ConvertExt.ToUInt64("4Eo8hfam6fllmp", 27); } catch (OverflowException) { hasException = true; } Assert.IsTrue(hasException, "没有正确引发 OverflowException。"); }
public void TestToUInt32() { Assert.AreEqual(0U, ConvertExt.ToUInt32("0", 13)); Assert.AreEqual(1U, ConvertExt.ToUInt32("1", 3)); Assert.AreEqual(14720U, ConvertExt.ToUInt32("1Gg0", 20)); Assert.AreEqual(2147483647U, ConvertExt.ToUInt32("282ba4aaa", 13)); Assert.AreEqual(2147483648U, ConvertExt.ToUInt32("3hk7988", 29)); Assert.AreEqual(3059288394U, ConvertExt.ToUInt32("1elf616", 36)); Assert.AreEqual(4294967294U, ConvertExt.ToUInt32("b28jpdk", 27)); Assert.AreEqual(4294967295U, ConvertExt.ToUInt32("b28jpdl", 27)); bool hasException = false; try { ConvertExt.ToUInt32("b28jpdm", 27); } catch (OverflowException) { hasException = true; } Assert.IsTrue(hasException, "没有正确引发 OverflowException。"); }
public void TestToSByte() { Assert.AreEqual(0, ConvertExt.ToSByte("0", 13)); Assert.AreEqual(1, ConvertExt.ToSByte("1", 3)); Assert.AreEqual(120, ConvertExt.ToSByte("60", 20)); Assert.AreEqual(127, ConvertExt.ToSByte("9a", 13)); Assert.AreEqual(-1, ConvertExt.ToSByte("9c", 27)); Assert.AreEqual(-2, ConvertExt.ToSByte("9b", 27)); Assert.AreEqual(-90, ConvertExt.ToSByte("4m", 36)); Assert.AreEqual(-128, ConvertExt.ToSByte("4c", 29)); bool hasException = false; try { ConvertExt.ToSByte("38o7", 27); } catch (OverflowException) { hasException = true; } Assert.IsTrue(hasException, "没有正确引发 OverflowException。"); }
public override void OnGUI(Rect position, SerializedProperty property, GUIContent label) { Rect colorFieldPos = new Rect(position.x, position.y, position.width - mLabelWidth, position.height); EditorGUI.PropertyField(colorFieldPos, property, label, true); GUI.SetNextControlName("Encoded Color"); Rect stringFieldPos = new Rect(position.x + position.width - mLabelWidth, position.y, mLabelWidth, position.height); mEncodedColor = EditorGUI.TextField(stringFieldPos, "", mEncodedColor); if (GUI.GetNameOfFocusedControl() == "Encoded Color") { if (Event.current.keyCode == KeyCode.Return && Event.current.type == EventType.Used) { property.colorValue = ConvertExt.ParseColor24(mEncodedColor, 0); } } else { mEncodedColor = ConvertExt.EncodeColor24(property.colorValue); } }
public void TestToString() { // 对转换 SByte 进行测试。 Assert.AreEqual("0", ConvertExt.ToString((sbyte)0, 13)); Assert.AreEqual("1", ConvertExt.ToString((sbyte)1, 3)); Assert.AreEqual("60", ConvertExt.ToString((sbyte)120, 20)); Assert.AreEqual("9A", ConvertExt.ToString((sbyte)127, 13)); Assert.AreEqual("9C", ConvertExt.ToString((sbyte)-1, 27)); Assert.AreEqual("-2", ConvertExt.ToString((sbyte)-2, 10)); Assert.AreEqual("4M", ConvertExt.ToString((sbyte)-90, 36)); Assert.AreEqual("4C", ConvertExt.ToString((sbyte)-128, 29)); // 对转换 Int16 进行测试。 Assert.AreEqual("0", ConvertExt.ToString((short)0, 13)); Assert.AreEqual("1", ConvertExt.ToString((short)1, 3)); Assert.AreEqual("1GG0", ConvertExt.ToString((short)14720, 20)); Assert.AreEqual("11BB7", ConvertExt.ToString((short)32767, 13)); Assert.AreEqual("38O6", ConvertExt.ToString((short)-1, 27)); Assert.AreEqual("-2", ConvertExt.ToString((short)-2, 10)); Assert.AreEqual("Y0E", ConvertExt.ToString((short)-21458, 36)); Assert.AreEqual("19RR", ConvertExt.ToString((short)-32768, 29)); // 对转换 Int32 进行测试。 Assert.AreEqual("0", ConvertExt.ToString(0, 13)); Assert.AreEqual("1", ConvertExt.ToString(1, 3)); Assert.AreEqual("1GG0", ConvertExt.ToString(14720, 20)); Assert.AreEqual("282BA4AAA", ConvertExt.ToString(2147483647, 13)); Assert.AreEqual("B28JPDL", ConvertExt.ToString(-1, 27)); Assert.AreEqual("-2", ConvertExt.ToString(-2, 10)); Assert.AreEqual("1ELF616", ConvertExt.ToString(-1235678902, 36)); Assert.AreEqual("3HK7988", ConvertExt.ToString(-2147483648, 29)); // 对转换 Int64 进行测试。 Assert.AreEqual("0", ConvertExt.ToString(0L, 13)); Assert.AreEqual("1", ConvertExt.ToString(1L, 3)); Assert.AreEqual("1GG0", ConvertExt.ToString(14720L, 20)); Assert.AreEqual("10B269549075433C37", ConvertExt.ToString(9223372036854775807L, 13)); Assert.AreEqual("4EO8HFAM6FLLMO", ConvertExt.ToString(-1L, 27)); Assert.AreEqual("-2", ConvertExt.ToString(-2L, 10)); Assert.AreEqual("26TVJYYBSZF7H", ConvertExt.ToString(-8071017880399937603L, 36)); Assert.AreEqual("Q1SE8F0M04ISC", ConvertExt.ToString(-9223372036854775808L, 29)); // 对转换 Byte 进行测试。 Assert.AreEqual("0", ConvertExt.ToString((byte)0, 13)); Assert.AreEqual("1", ConvertExt.ToString((byte)1, 3)); Assert.AreEqual("60", ConvertExt.ToString((byte)120, 20)); Assert.AreEqual("9A", ConvertExt.ToString((byte)127, 13)); Assert.AreEqual("4C", ConvertExt.ToString((byte)128, 29)); Assert.AreEqual("4M", ConvertExt.ToString((byte)166, 36)); Assert.AreEqual("254", ConvertExt.ToString((byte)254, 10)); Assert.AreEqual("9C", ConvertExt.ToString((byte)255, 27)); // 对转换 UInt16 进行测试。 Assert.AreEqual("0", ConvertExt.ToString((ushort)0, 13)); Assert.AreEqual("1", ConvertExt.ToString((ushort)1, 3)); Assert.AreEqual("1GG0", ConvertExt.ToString((ushort)14720, 20)); Assert.AreEqual("11BB7", ConvertExt.ToString((ushort)32767, 13)); Assert.AreEqual("19RR", ConvertExt.ToString((ushort)32768, 29)); Assert.AreEqual("Y0E", ConvertExt.ToString((ushort)44078, 36)); Assert.AreEqual("65534", ConvertExt.ToString((ushort)65534, 10)); Assert.AreEqual("38O6", ConvertExt.ToString((ushort)65535, 27)); // 对转换 UInt32 进行测试。 Assert.AreEqual("0", ConvertExt.ToString(0U, 13)); Assert.AreEqual("1", ConvertExt.ToString(1U, 3)); Assert.AreEqual("1GG0", ConvertExt.ToString(14720U, 20)); Assert.AreEqual("282BA4AAA", ConvertExt.ToString(2147483647U, 13)); Assert.AreEqual("3HK7988", ConvertExt.ToString(2147483648U, 29)); Assert.AreEqual("1ELF616", ConvertExt.ToString(3059288394U, 36)); Assert.AreEqual("4294967294", ConvertExt.ToString(4294967294U, 10)); Assert.AreEqual("B28JPDL", ConvertExt.ToString(4294967295U, 27)); // 对转换 UInt64 进行测试。 Assert.AreEqual("0", ConvertExt.ToString(0U, 13)); Assert.AreEqual("1", ConvertExt.ToString(1U, 3)); Assert.AreEqual("1GG0", ConvertExt.ToString(14720U, 20)); Assert.AreEqual("10B269549075433C37", ConvertExt.ToString(9223372036854775807UL, 13)); Assert.AreEqual("Q1SE8F0M04ISC", ConvertExt.ToString(9223372036854775808UL, 29)); Assert.AreEqual("26TVJYYBSZF7H", ConvertExt.ToString(10375726193309614013UL, 36)); Assert.AreEqual("18446744073709551614", ConvertExt.ToString(18446744073709551614UL, 10)); Assert.AreEqual("4EO8HFAM6FLLMO", ConvertExt.ToString(18446744073709551615UL, 27)); }
/// <summary> /// Convert type of cell value to its predefined type which is specified in the sheet's ScriptMachine setting file. /// </summary> protected object ConvertFrom(ICell cell, Type t) { object value = null; if (t == typeof(float) || t == typeof(double) || t == typeof(short) || t == typeof(int) || t == typeof(long)) { if (cell.CellType == NPOI.SS.UserModel.CellType.Numeric) { value = cell.NumericCellValue; } else if (cell.CellType == NPOI.SS.UserModel.CellType.String) { //Get correct numeric value even the cell is string type but defined with a numeric type in a data class. if (t == typeof(float)) { value = Convert.ToSingle(cell.StringCellValue); } if (t == typeof(double)) { value = Convert.ToDouble(cell.StringCellValue); } if (t == typeof(short)) { value = Convert.ToInt16(cell.StringCellValue); } if (t == typeof(int)) { value = Convert.ToInt32(cell.StringCellValue); } if (t == typeof(long)) { value = Convert.ToInt64(cell.StringCellValue); } } else if (cell.CellType == NPOI.SS.UserModel.CellType.Formula) { // Get value even if cell is a formula if (t == typeof(float)) { value = Convert.ToSingle(cell.NumericCellValue); } if (t == typeof(double)) { value = Convert.ToDouble(cell.NumericCellValue); } if (t == typeof(short)) { value = Convert.ToInt16(cell.NumericCellValue); } if (t == typeof(int)) { value = Convert.ToInt32(cell.NumericCellValue); } if (t == typeof(long)) { value = Convert.ToInt64(cell.NumericCellValue); } } } else if (t == typeof(string) || t.IsArray) { // HACK: handles the case that a cell contains numeric value // but a member field in a data class is defined as string type. // e.g. string s = "123" if (cell.CellType == NPOI.SS.UserModel.CellType.Numeric) { value = cell.NumericCellValue; } else { value = cell.StringCellValue; } } else if (t == typeof(bool)) { value = cell.BooleanCellValue; } else if (t.IsGenericType) { if (cell.CellType == NPOI.SS.UserModel.CellType.Numeric) { value = cell.NumericCellValue; } else { value = cell.StringCellValue; } } if (t.IsGenericType && t.GetGenericTypeDefinition().Equals(typeof(Nullable <>))) { var nc = new NullableConverter(t); return(nc.ConvertFrom(value)); } if (t.IsEnum) { // for enum type, first get value by string then convert it to enum. value = cell.StringCellValue; return(Enum.Parse(t, value.ToString(), true)); } else if (t.IsArray) { string strValue = value.ToString(); if (t.GetElementType() == typeof(float)) { return(ConvertExt.ToSingleArray(strValue)); } if (t.GetElementType() == typeof(double)) { return(ConvertExt.ToDoubleArray(strValue)); } if (t.GetElementType() == typeof(short)) { return(ConvertExt.ToInt16Array(strValue)); } if (t.GetElementType() == typeof(int)) { return(ConvertExt.ToInt32Array(strValue)); } if (t.GetElementType() == typeof(long)) { return(ConvertExt.ToInt64Array(strValue)); } if (t.GetElementType() == typeof(string)) { return(ConvertExt.ToStringArray(strValue)); } } else if (t.IsGenericType) { string strValue = value.ToString(); if (t == typeof(List <float>)) { return(ConvertExt.ToSingleList(strValue)); } if (t == typeof(List <double>)) { return(ConvertExt.ToDoubleList(strValue)); } if (t == typeof(List <short>)) { return(ConvertExt.ToInt16List(strValue)); } if (t == typeof(List <int>)) { return(ConvertExt.ToInt32List(strValue)); } if (t == typeof(List <long>)) { return(ConvertExt.ToInt64List(strValue)); } if (t == typeof(List <string>)) { return(ConvertExt.ToStringList(strValue)); } } // for all other types, convert its corresponding type. if (cell.CellType == NPOI.SS.UserModel.CellType.String) { string str = (string)value; str = str.Replace("\\n", "\n"); value = str; } return(Convert.ChangeType(value, t)); }
public void TestChangeType() { TestImplicitChangeTypeHelper(ConvertExt.ChangeType); #region 6.2.1 显式数值转换 Assert.AreEqual((byte)10, ConvertExt.ChangeType((sbyte)10, typeof(byte))); Assert.AreEqual((ushort)11, ConvertExt.ChangeType((sbyte)11, typeof(ushort))); Assert.AreEqual((uint)12, ConvertExt.ChangeType((sbyte)12, typeof(uint))); Assert.AreEqual((ulong)13, ConvertExt.ChangeType((sbyte)13, typeof(ulong))); Assert.AreEqual((char)14, ConvertExt.ChangeType((sbyte)14, typeof(char))); Assert.AreEqual((sbyte)10, ConvertExt.ChangeType((byte)10, typeof(sbyte))); Assert.AreEqual((char)11, ConvertExt.ChangeType((byte)11, typeof(char))); Assert.AreEqual((sbyte)10, ConvertExt.ChangeType((short)10, typeof(sbyte))); Assert.AreEqual((byte)11, ConvertExt.ChangeType((short)11, typeof(byte))); Assert.AreEqual((ushort)13, ConvertExt.ChangeType((short)13, typeof(ushort))); Assert.AreEqual((uint)15, ConvertExt.ChangeType((short)15, typeof(uint))); Assert.AreEqual((ulong)17, ConvertExt.ChangeType((short)17, typeof(ulong))); Assert.AreEqual((char)18, ConvertExt.ChangeType((short)18, typeof(char))); Assert.AreEqual((sbyte)10, ConvertExt.ChangeType((ushort)10, typeof(sbyte))); Assert.AreEqual((byte)11, ConvertExt.ChangeType((ushort)11, typeof(byte))); Assert.AreEqual((short)12, ConvertExt.ChangeType((ushort)12, typeof(short))); Assert.AreEqual((char)18, ConvertExt.ChangeType((ushort)18, typeof(char))); Assert.AreEqual((sbyte)10, ConvertExt.ChangeType((int)10, typeof(sbyte))); Assert.AreEqual((byte)11, ConvertExt.ChangeType((int)11, typeof(byte))); Assert.AreEqual((short)12, ConvertExt.ChangeType((int)12, typeof(short))); Assert.AreEqual((ushort)13, ConvertExt.ChangeType((int)13, typeof(ushort))); Assert.AreEqual((uint)15, ConvertExt.ChangeType((int)15, typeof(uint))); Assert.AreEqual((ulong)17, ConvertExt.ChangeType((int)17, typeof(ulong))); Assert.AreEqual((char)18, ConvertExt.ChangeType((int)18, typeof(char))); Assert.AreEqual((sbyte)10, ConvertExt.ChangeType((uint)10, typeof(sbyte))); Assert.AreEqual((byte)11, ConvertExt.ChangeType((uint)11, typeof(byte))); Assert.AreEqual((short)12, ConvertExt.ChangeType((uint)12, typeof(short))); Assert.AreEqual((ushort)13, ConvertExt.ChangeType((uint)13, typeof(ushort))); Assert.AreEqual((int)14, ConvertExt.ChangeType((uint)14, typeof(int))); Assert.AreEqual((char)18, ConvertExt.ChangeType((uint)18, typeof(char))); Assert.AreEqual((sbyte)10, ConvertExt.ChangeType((long)10, typeof(sbyte))); Assert.AreEqual((byte)11, ConvertExt.ChangeType((long)11, typeof(byte))); Assert.AreEqual((short)12, ConvertExt.ChangeType((long)12, typeof(short))); Assert.AreEqual((ushort)13, ConvertExt.ChangeType((long)13, typeof(ushort))); Assert.AreEqual((int)14, ConvertExt.ChangeType((long)14, typeof(int))); Assert.AreEqual((uint)15, ConvertExt.ChangeType((long)15, typeof(uint))); Assert.AreEqual((ulong)17, ConvertExt.ChangeType((long)17, typeof(ulong))); Assert.AreEqual((char)18, ConvertExt.ChangeType((long)18, typeof(char))); Assert.AreEqual((sbyte)10, ConvertExt.ChangeType((ulong)10, typeof(sbyte))); Assert.AreEqual((byte)11, ConvertExt.ChangeType((ulong)11, typeof(byte))); Assert.AreEqual((short)12, ConvertExt.ChangeType((ulong)12, typeof(short))); Assert.AreEqual((ushort)13, ConvertExt.ChangeType((ulong)13, typeof(ushort))); Assert.AreEqual((int)14, ConvertExt.ChangeType((ulong)14, typeof(int))); Assert.AreEqual((uint)15, ConvertExt.ChangeType((ulong)15, typeof(uint))); Assert.AreEqual((long)16, ConvertExt.ChangeType((ulong)16, typeof(long))); Assert.AreEqual((char)18, ConvertExt.ChangeType((ulong)18, typeof(char))); Assert.AreEqual((sbyte)10, ConvertExt.ChangeType((char)10, typeof(sbyte))); Assert.AreEqual((byte)11, ConvertExt.ChangeType((char)11, typeof(byte))); Assert.AreEqual((short)12, ConvertExt.ChangeType((char)12, typeof(short))); Assert.AreEqual((sbyte)10, ConvertExt.ChangeType((float)10, typeof(sbyte))); Assert.AreEqual((byte)11, ConvertExt.ChangeType((float)11, typeof(byte))); Assert.AreEqual((short)12, ConvertExt.ChangeType((float)12, typeof(short))); Assert.AreEqual((ushort)13, ConvertExt.ChangeType((float)13, typeof(ushort))); Assert.AreEqual((int)14, ConvertExt.ChangeType((float)14, typeof(int))); Assert.AreEqual((uint)15, ConvertExt.ChangeType((float)15, typeof(uint))); Assert.AreEqual((long)16, ConvertExt.ChangeType((float)16, typeof(long))); Assert.AreEqual((ulong)17, ConvertExt.ChangeType((float)17, typeof(ulong))); Assert.AreEqual((char)18, ConvertExt.ChangeType((float)18, typeof(char))); Assert.AreEqual((decimal)21, ConvertExt.ChangeType((float)21, typeof(decimal))); Assert.AreEqual((sbyte)10, ConvertExt.ChangeType((double)10, typeof(sbyte))); Assert.AreEqual((byte)11, ConvertExt.ChangeType((double)11, typeof(byte))); Assert.AreEqual((short)12, ConvertExt.ChangeType((double)12, typeof(short))); Assert.AreEqual((ushort)13, ConvertExt.ChangeType((double)13, typeof(ushort))); Assert.AreEqual((int)14, ConvertExt.ChangeType((double)14, typeof(int))); Assert.AreEqual((uint)15, ConvertExt.ChangeType((double)15, typeof(uint))); Assert.AreEqual((long)16, ConvertExt.ChangeType((double)16, typeof(long))); Assert.AreEqual((ulong)17, ConvertExt.ChangeType((double)17, typeof(ulong))); Assert.AreEqual((char)18, ConvertExt.ChangeType((double)18, typeof(char))); Assert.AreEqual((float)19, ConvertExt.ChangeType((double)19, typeof(float))); Assert.AreEqual((decimal)21, ConvertExt.ChangeType((double)21, typeof(decimal))); Assert.AreEqual((sbyte)10, ConvertExt.ChangeType((decimal)10, typeof(sbyte))); Assert.AreEqual((byte)11, ConvertExt.ChangeType((decimal)11, typeof(byte))); Assert.AreEqual((short)12, ConvertExt.ChangeType((decimal)12, typeof(short))); Assert.AreEqual((ushort)13, ConvertExt.ChangeType((decimal)13, typeof(ushort))); Assert.AreEqual((int)14, ConvertExt.ChangeType((decimal)14, typeof(int))); Assert.AreEqual((uint)15, ConvertExt.ChangeType((decimal)15, typeof(uint))); Assert.AreEqual((long)16, ConvertExt.ChangeType((decimal)16, typeof(long))); Assert.AreEqual((ulong)17, ConvertExt.ChangeType((decimal)17, typeof(ulong))); Assert.AreEqual((char)18, ConvertExt.ChangeType((decimal)18, typeof(char))); Assert.AreEqual((float)19, ConvertExt.ChangeType((decimal)19, typeof(float))); Assert.AreEqual((double)20, ConvertExt.ChangeType((decimal)20, typeof(double))); #endregion // 6.2.1 显式数值转换 #region 6.2.2 显式枚举转换 Assert.AreEqual(Tristate.True, ConvertExt.ChangeType((sbyte)1, typeof(Tristate))); Assert.AreEqual(Tristate.True, ConvertExt.ChangeType((byte)1, typeof(Tristate))); Assert.AreEqual(Tristate.True, ConvertExt.ChangeType((short)1, typeof(Tristate))); Assert.AreEqual(Tristate.True, ConvertExt.ChangeType((ushort)1, typeof(Tristate))); Assert.AreEqual(Tristate.True, ConvertExt.ChangeType((int)1, typeof(Tristate))); Assert.AreEqual(Tristate.True, ConvertExt.ChangeType((uint)1, typeof(Tristate))); Assert.AreEqual(Tristate.True, ConvertExt.ChangeType((long)1, typeof(Tristate))); Assert.AreEqual(Tristate.True, ConvertExt.ChangeType((ulong)1, typeof(Tristate))); Assert.AreEqual(Tristate.True, ConvertExt.ChangeType((char)1, typeof(Tristate))); Assert.AreEqual(Tristate.True, ConvertExt.ChangeType((float)1, typeof(Tristate))); Assert.AreEqual(Tristate.True, ConvertExt.ChangeType((double)1, typeof(Tristate))); Assert.AreEqual(Tristate.True, ConvertExt.ChangeType((decimal)1, typeof(Tristate))); Assert.AreEqual((sbyte)1, ConvertExt.ChangeType(Tristate.True, typeof(sbyte))); Assert.AreEqual((byte)1, ConvertExt.ChangeType(Tristate.True, typeof(byte))); Assert.AreEqual((short)1, ConvertExt.ChangeType(Tristate.True, typeof(short))); Assert.AreEqual((ushort)1, ConvertExt.ChangeType(Tristate.True, typeof(ushort))); Assert.AreEqual((int)1, ConvertExt.ChangeType(Tristate.True, typeof(int))); Assert.AreEqual((uint)1, ConvertExt.ChangeType(Tristate.True, typeof(uint))); Assert.AreEqual((long)1, ConvertExt.ChangeType(Tristate.True, typeof(long))); Assert.AreEqual((ulong)1, ConvertExt.ChangeType(Tristate.True, typeof(ulong))); Assert.AreEqual((char)1, ConvertExt.ChangeType(Tristate.True, typeof(char))); Assert.AreEqual((float)1, ConvertExt.ChangeType(Tristate.True, typeof(float))); Assert.AreEqual((double)1, ConvertExt.ChangeType(Tristate.True, typeof(double))); Assert.AreEqual((decimal)1, ConvertExt.ChangeType(Tristate.True, typeof(decimal))); Assert.AreEqual((BindingFlags)1, ConvertExt.ChangeType(Tristate.True, typeof(BindingFlags))); Assert.AreEqual((Tristate)1, ConvertExt.ChangeType((BindingFlags)1, typeof(Tristate))); #endregion // 6.2.2 显式枚举转换 #region 6.2.3 可以为 null 的显式转换 // 从 S 到 T? 的显式转换。 Assert.AreEqual((int?)10, ConvertExt.ChangeType((long)10, typeof(int?))); // 从 S? 到 T? 的显式转换。 Assert.AreEqual((int?)10, ConvertExt.ChangeType((long?)10, typeof(int?))); Assert.AreEqual((int?)null, ConvertExt.ChangeType((long?)null, typeof(int?))); // 从 S? 到 T 的显式转换。 Assert.AreEqual(10, ConvertExt.ChangeType((long?)10, typeof(int))); #endregion // 6.2.3 可以为 null 的显式转换 }
public static T Get <T>(string key) { var val = HttpRuntime.Cache[key]; return(ConvertExt.ChangeType <T>(val)); }