本文为《
c#扩展方法奇思妙用》系列文章基础篇,比较简单,没有太多技术含量,不用太多解释。同前面,主要提供大家一个思路,如需要使用,请自行完善。
应用一:转换为十六进制字符串
1
public
static
string
ToHex(
this
byte
b)
2
{
3
return
b.ToString(
"
X2
"
);
4
}
5
6
public
static
string
ToHex(
this
IEnumerable
<
byte
>
bytes)
7
{
8
var sb
=
new
StringBuilder();
9
foreach
(
byte
b
in
bytes)
10
sb.Append(b.ToString(
"
X2
"
));
11
return
sb.ToString();
12
}
第二个扩展返回的十六进制字符串是连着的,一些情况下为了阅读方便会用一个空格分开,处理比较简单,不再给出示例。
应用二:转换为Base64字符串
1
public
static
string
ToBase64String(
byte
[] bytes)
2
{
3
return
Convert.ToBase64String(bytes);
4
}
应用三:转换为基础数据类型
1
public
static
int
ToInt(
this
byte
[] value,
int
startIndex)
2
{
3
return
BitConverter.ToInt32(value, startIndex);
4
}
5
public
static
long
ToInt64(
this
byte
[] value,
int
startIndex)
6
{
7
return
BitConverter.ToInt64(value, startIndex);
8
}
BitConverter类还有很多方法(ToSingle、ToDouble、ToChar...),可以如上进行扩展。
应用四:转换为指定编码的字符串
1
public
static
string
Decode(
this
byte
[] data, Encoding encoding)
2
{
3
return
encoding.GetString(data);
4
}
应用五:Hash
1
//
使用指定算法Hash
2
public
static
byte
[] Hash(
this
byte
[] data,
string
hashName)
3
{
4
HashAlgorithm algorithm;
5
if
(
string
.IsNullOrEmpty(hashName)) algorithm
=
HashAlgorithm.Create();
6
else
algorithm
=
HashAlgorithm.Create(hashName);
7
return
algorithm.ComputeHash(data);
8
}
9
//
使用默认算法Hash
10
public
static
byte
[] Hash(
this
byte
[] data)
11
{
12
return
Hash(data,
null
);
13
}
应用六:位运算
1
//
index从0开始
2
//
获取取第index是否为1
3
public
static
bool
GetBit(
this
byte
b,
int
index)
4
{
5
return
(b
&
(
1
<<
index))
>
0
;
6
}
7
//
将第index位设为1
8
public
static
byte
SetBit(
this
byte
b,
int
index)
9
{
10
b
|=
(
byte
)(
1
<<
index);
11
return
b;
12
}
13
//
将第index位设为0
14
public
static
byte
ClearBit(
this
byte
b,
int
index)
15
{
16
b
&=
(
byte
)((
1
<<
8
)
-
1
-
(
1
<<
index));
17
return
b;
18
}
19
//
将第index位取反
20
public
static
byte
ReverseBit(
this
byte
b,
int
index)
21
{
22
b
^=
(
byte
)(
1
<<
index);
23
return
b;
24
}
应用七:保存为文件
1
public
static
void
Save(
this
byte
[]
data,
string
path)
2
{
3
File.WriteAllBytes(path, data);
4
}
应用八:转换为内存流
1
public
static
MemoryStream ToMemoryStream(
this
byte
[] data)
2
{
3
return
new
MemoryStream(data);
4
}
能想到的就这么多了!欢迎大家补充!
《c#扩展方法奇思妙用》系列文章已有10篇,以后还会陆续发表一些,敬请关注!![](http://img.e-com-net.com/image/product/5273afdfcf224448a2bc7bc1e40bddc2.gif)