C# byte数组常用扩展浅析

C# byte数组常用扩展是我们编程中经常会碰到的一些实用性很强的操作,那么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);
}

时间: 2024-11-02 12:09:37

C# byte数组常用扩展浅析的相关文章

跪求C#下如何实现自定义结构或类与BYTE数组之间的相互转换(即数据的打包与解包)?

问题描述 请教C#下如何实现自定义结构或类与BYTE数组之间的相互转换(即数据的打包与解包)?在C#定义类似如下的结构和类:[Serializable][StructLayout(LayoutKind.Sequential,Pack=1)]publicstructSTCord{publicdoublex;//publicdoubley;publicbytetype;publicintnum;};[Serializable][StructLayout(LayoutKind.Sequential,P

WebAPi添加常用扩展方法及思维发散

前言 在WebAPi中我们通常需要得到请求信息中的查询字符串或者请求头中数据再或者是Cookie中的数据,如果需要大量获取,此时我们应该想到封装一个扩展类来添加扩展方法,从而实现简便快捷的获取. WebAPi常用扩展方法 (1)获取所有键值对 /// <summary> /// 获取所有键值 /// </summary> /// <param name="request"></param> /// <returns></

rgb转换byte数组-rgb转byte数组应该怎么处理

问题描述 rgb转byte数组应该怎么处理 我在看YUV420SP转RGB的时候有如下一段java代码if (r < 0) r = 0; else if (r > 262143) r = 262143; if (g < 0) g = 0; else if (g > 262143) g = 262143; if (b < 0) b = 0; else if (b > 262143) b = 262143; rgbBuf[yp * 3] = (byte)(r >>

将Byte数组转化为String

数组 问题 FCL得很多方法的返回值都是包含字符的Byte数组而不是返回一个String,这样的方法包含在如下的类中: · System.Net.Sockets.Socket.Receive · System.Net.Sockets.Socket.ReceiveFrom · System.Net.Sockets.Socket.BeginReceive · System.Net.Sockets.Socket.BeginReceiveFrom · System.Net.Sockets.Network

C#中将byte数组转换为8bit灰度图像

类似的文章在网上可以看到不少,但多多少少都存在一些问题.这两天做实验室的项目用到这个功能 ,我从头把它整理了一遍. 在看代码之前,首先解释几个问题. byte数组存放的是图像每个像素的灰度值,byte类型正好是从0~255,存放8bit灰度图像的时候,一个 数组元素就是一个像素的灰度值.仅有这个数组还不足以恢复出原来的图像,还必须事先知道图像的长. 宽值: 创建Bitmap类的时候必须指定PixelFormat为Format8bppIndexed,这样才最符合图像本身的特性: Bitmap类虽然

从图像转换到byte[]数组的几种方法

// 性能最高,其数组和像素一一对应 public static void test1(Image img) { Bitmap bmp = new Bitmap(img); BitmapData bitmapData = bmp.LockBits(new Rectangle(new Point(0, 0), img.Size), ImageLockMode.ReadWrite, PixelFormat.Format24bppRgb); byte[] BGRValues = new byte[bi

兼容Firefox 3的常用扩展工具推荐

Mozilla FireFox(下载)扩展是一种具有一些新功能的加载项,这些扩展可以允许应用定制以适应个人的需求,因为每个用户可能都会有一些额外的需求,而FireFox的主程序可以做到尽量的小巧.以前我曾经介绍过很多Firefox 2.0的扩展,随着Firefox 3.0的发布,我就再介绍十个兼容Firefox 3.0的常用扩展. Google Toolbar- Google工具栏具有拦截广告.自定义按钮.建立书签.网页翻译等多项功能,使得搜索和浏览更为方便,非常好用. Adblock Plus

js数组方法扩展实现数组统计函数

 这篇文章主要介绍了js数组方法扩展,实现数组统计函数,需要的朋友可以参考下  代码如下: /**************************************************** *CreateBy:joe zhou *Description:数组统计函数 ****************************************************/ $.extend({     max: function (arr) {         return cacl(

字符-java 中byte数组转换问题,求思路

问题描述 java 中byte数组转换问题,求思路 现在做的项目有一个byte数组转换的问题,思考很久没有思路,求各路大神给点意见. 需求 :将一个byte数组中的每个元素拆分成两个byte.分别保存前一个byte中的16进制两位的内容的ascii码. 事例 : byte[] a = {0x24,0xBD}; byte[] b = new byte[4]; 想得到的结果: b[0] == 0x32; b[1] == 0x34; b[2] == 0x42; b[3] == 0x44;