博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
c# 扩展方法奇思妙用基础篇三:byte 常用扩展
阅读量:6500 次
发布时间:2019-06-24

本文共 2132 字,大约阅读时间需要 7 分钟。

转换为十六进制字符串

 

 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 
    }

小结

  能想到的就这么多了!欢迎大家补充!

转载于:https://www.cnblogs.com/ywsoftware/archive/2013/06/09/3128739.html

你可能感兴趣的文章
python的image用法_python使用Image处理图片常用技巧分析
查看>>
JDBC_MySQL_jdbc连接mysql_MySQL
查看>>
新手学习python零基础_新手零基础学习Python第一步,搭建开发环境!
查看>>
mysql cte的好处_Mysql 8 重要新特性 - CTE 通用表表达式
查看>>
zcu106 固化_xilinx zcu106 vcu demo
查看>>
java 打印万年历_Java基础之打印万年历
查看>>
java ftpclient 代码_java后台代码ftpclient下载文件
查看>>
java mina 长连接_MINA实现TCP长连接(二)——服务端实现
查看>>
java数据库生成model_继承BaseModelGenerator 生成Model时添加数据库表字段 生成代码示例...
查看>>
https redirects java_java HttpURLConnection 得到 Redirect 转向的例子
查看>>
java读取html文件并替换_java读取html并替换相关内容
查看>>
java面向对象的概念_java面向对象(上)-- 面向对象的概念
查看>>
dbscan算法python实现_Python实现DBScan
查看>>
java智能聊天软件_Java使用青云客智能聊天接口做一个小助手
查看>>
java定义player类_Java自定义一个异常类NoThisSongException和Player类
查看>>
java 字符串 算法 面试题_java笔试手写算法面试题大全含答案
查看>>
java内部类访问外部类变量 final_Java内部类引用外部类中的局部变量为什么必须是final问题解析...
查看>>
java编程思想第四章_《JAVA编程思想》学习笔记——第四章 控制执行流程
查看>>
换行符 html java_java 去html标签,去除字符串中的空格,回车,换行符,制表符
查看>>
java 栈帧与类的关系_深入理解Java虚拟机之类运行时栈帧结构
查看>>