`

C# byte数组常用扩展(转载)

c# 
阅读更多
C# byte数组常用扩展(转载)

C# byte数组常用扩展应用一:转换为十六进制字符串

public static string ToHex(this byte b) 

return b.ToString("X2"); 

   
public static string ToHex(this IEnumerable<byte> bytes) 

var sb = new StringBuilder(); 
foreach (byte b in bytes) 
sb.Append(b.ToString("X2")); 
return sb.ToString(); 
}
    第二个扩展返回的十六进制字符串是连着的,一些情况下为了阅读方便会用一个空格分开,处理比较简单,不再给出示例。

    C# byte数组常用扩展应用二:转换为Base64字符串

public static string ToBase64String(byte[] bytes) 

return Convert.ToBase64String(bytes); 
}
    C# byte数组常用扩展应用三:转换为基础数据类型

public static int ToInt(this byte[] value, int startIndex) 

return BitConverter.ToInt32(value, startIndex); 

public static long ToInt64(this byte[] value, int startIndex) 

return BitConverter.ToInt64(value, startIndex); 
}
    BitConverter类还有很多方法(ToSingle、ToDouble、ToChar...),可以如上进行扩展。

    C# byte数组常用扩展应用四:转换为指定编码的字符串

public static string Decode(this byte[] data, Encoding encoding) 

return encoding.GetString(data); 
}
    C# byte数组常用扩展应用五:Hash

//使用指定算法Hash 
public static byte[] Hash(this byte[] data, string hashName) 

HashAlgorithm algorithm; 
if (string.IsNullOrEmpty(hashName)) algorithm = HashAlgorithm.Create(); 
else algorithm = HashAlgorithm.Create(hashName); 
return algorithm.ComputeHash(data); 

//使用默认算法Hash 
public static byte[] Hash(this byte[] data) 

return Hash(data, null); 
}
    C# byte数组常用扩展应用六:位运算

//index从0开始 
//获取取第index是否为1 
public static bool GetBit(this byte b, int index) 

return (b & (1 << index)) > 0; 

//将第index位设为1 
public static byte SetBit(this byte b, int index) 

b |= (byte)(1 << index); 
return b; 

//将第index位设为0 
public static byte ClearBit(this byte b, int index) 

b &= (byte)((1 << - 1 - (1 << index)); 
return b; 

//将第index位取反 
public static byte ReverseBit(this byte b, int index) 

b ^= (byte)(1 << index); 
  return b; 
}
    C# byte数组常用扩展应用七:保存为文件

public static void Save(this byte[] data, string path) 

File.WriteAllBytes(path, data); 
}
    C# byte数组常用扩展应用八:转换为内存流

public static MemoryStream ToMemoryStream(this byte[] data) 

return new MemoryStream(data); 
分享到:
评论

相关推荐

    在一小时内学会 C#(txt版本)

    所有代码(类声明和实现)都放在扩展名为 cs 的单一文件中。 看看 C# 中的 Hello World 程序。 复制内容到剪贴板 代码: using System; namespace MyNameSpace { class HelloWorld { static void Main(string[]...

    c# 加密和解密相关代码

    public byte[] ComputeHash(byte[] buffer,int offset,int count) ComputeHash 方法中的参数及说明如表19.1 所示。 表19.1 ComputeHash方法中的参数及说明 参 数 说 明 buffer 要计算其哈希代码的输入 offset 字节...

    C#基础类库

    3.把Byte流上传到指定目录并保存为文件 复制代码 UpLoadFiles 页面专用类 19.时间操作类 DateFormat 返回每月的第一天和最后一天 复制代码 TimeHelper 1.将时间格式化成 年月日 的形式,如果时间为null,返回当前...

    C#基类库(苏飞版)

    3.把Byte流上传到指定目录并保存为文件 复制代码 UpLoadFiles 页面专用类 19.时间操作类 DateFormat 返回每月的第一天和最后一天 复制代码 TimeHelper 1.将时间格式化成 年月日 的形式,如果时间为null,返回当前...

    dot-imaging:简约的.NET影像可移植平台

    .NET图像数组扩展。 颜色和深度转换。 超薄的非托管结构,可快速处理像素。 教程: // convert to grayscale and flip Bgr &lt; byte&gt;[,] image = ImageIO . LoadColor ( " sample.jpg " ); // IO package Gray &lt; byte...

    毕业设计、JAVA、C#,包括毕业设计,课程设计,主流的学生管理系统.zip

    Java编译程序生成字节码(byte-code),而不是通常的机器码。Java字节码提供对体系结构中性的目标文件格式,代码设计成可有效地传送程序到多个平台。Java程序可以在任何实现了Java解释程序和运行系统(run-time ...

    net学习笔记及其他代码应用

    优点: 分工明确,条理清晰,易于调试,而且具有可扩展性。 缺点: 增加成本。 12.在下面的例子里 using System; class A { public A() { PrintFields(); } public virtual void PrintFields(){} } ...

    ASP.NET2.0高级编程(第4版)1/6

    C# 2.0语言的改进1067 A.1 概述1067 A.2 泛型1068 A.2.1 泛型集合1068 A.2.2 泛型方法1072 A.3 迭代器1074 A.4 匿名方法1075 A.5 运算符重载1077 A.6 全局命名空间限定符1077 A.7 部分类1078 A.8 Visual Basic XML...

    java面试题

    c#中的委托,事件是不是委托? 答:委托就是将方法作为一个参数带入另一个方法叫做委托,事件是一种特殊的委托。 应用程序域? 答:应用程序域可以理解为一种轻量级的进程,起到安全的作用,占用资源小。 Class.for...

    2.ASP.NET.2.0.高级编程(第4版) [1/7]

    6.3.5 把文件内容从Stream对象移动到Byte数组中 175 6.4 MultiView和View服务器控件 175 6.5 Wizard服务器控件 179 6.5.1 定制边栏导航 181 6.5.2 AllowReturn属性 182 6.5.3 使用StepType属性 182 6.5.4 给...

Global site tag (gtag.js) - Google Analytics