-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathConvertHelper.cs
More file actions
148 lines (132 loc) · 4.86 KB
/
Copy pathConvertHelper.cs
File metadata and controls
148 lines (132 loc) · 4.86 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
/** 1. 功能:处理数据类型转换,数制转换、编码转换相关的类
* 2. 作者:周兆坤
* 3. 创建日期:2010-3-19
* 4. 最后修改日期:2010-3-19
**/
using System;
using System.Text;
namespace DotNet.Utilities
{
/// <summary>
/// 处理数据类型转换,数制转换、编码转换相关的类
/// </summary>
public sealed class ConvertHelper
{
#region 补足位数
/// <summary>
/// 指定字符串的固定长度,如果字符串小于固定长度,
/// 则在字符串的前面补足零,可设置的固定长度最大为9位
/// </summary>
/// <param name="text">原始字符串</param>
/// <param name="limitedLength">字符串的固定长度</param>
public static string RepairZero(string text, int limitedLength)
{
//补足0的字符串
string temp = "";
//补足0
for (int i = 0; i < limitedLength - text.Length; i++)
{
temp += "0";
}
//连接text
temp += text;
//返回补足0的字符串
return temp;
}
#endregion
#region 各进制数间转换
/// <summary>
/// 实现各进制数间的转换。ConvertBase("15",10,16)表示将十进制数15转换为16进制的数。
/// </summary>
/// <param name="value">要转换的值,即原值</param>
/// <param name="from">原值的进制,只能是2,8,10,16四个值。</param>
/// <param name="to">要转换到的目标进制,只能是2,8,10,16四个值。</param>
public static string ConvertBase(string value, int from, int to)
{
try
{
int intValue = Convert.ToInt32(value, from); //先转成10进制
string result = Convert.ToString(intValue, to); //再转成目标进制
if (to == 2)
{
int resultLength = result.Length; //获取二进制的长度
switch (resultLength)
{
case 7:
result = "0" + result;
break;
case 6:
result = "00" + result;
break;
case 5:
result = "000" + result;
break;
case 4:
result = "0000" + result;
break;
case 3:
result = "00000" + result;
break;
}
}
return result;
}
catch
{
//LogHelper.WriteTraceLog(TraceLogLevel.Error, ex.Message);
return "0";
}
}
#endregion
#region 使用指定字符集将string转换成byte[]
/// <summary>
/// 使用指定字符集将string转换成byte[]
/// </summary>
/// <param name="text">要转换的字符串</param>
/// <param name="encoding">字符编码</param>
public static byte[] StringToBytes(string text, Encoding encoding)
{
return encoding.GetBytes(text);
}
#endregion
#region 使用指定字符集将byte[]转换成string
/// <summary>
/// 使用指定字符集将byte[]转换成string
/// </summary>
/// <param name="bytes">要转换的字节数组</param>
/// <param name="encoding">字符编码</param>
public static string BytesToString(byte[] bytes, Encoding encoding)
{
return encoding.GetString(bytes);
}
#endregion
#region 将byte[]转换成int
/// <summary>
/// 将byte[]转换成int
/// </summary>
/// <param name="data">需要转换成整数的byte数组</param>
public static int BytesToInt32(byte[] data)
{
//如果传入的字节数组长度小于4,则返回0
if (data.Length < 4)
{
return 0;
}
//定义要返回的整数
int num = 0;
//如果传入的字节数组长度大于4,需要进行处理
if (data.Length >= 4)
{
//创建一个临时缓冲区
byte[] tempBuffer = new byte[4];
//将传入的字节数组的前4个字节复制到临时缓冲区
Buffer.BlockCopy(data, 0, tempBuffer, 0, 4);
//将临时缓冲区的值转换成整数,并赋给num
num = BitConverter.ToInt32(tempBuffer, 0);
}
//返回整数
return num;
}
#endregion
}
}