C#中string与byte[]的转换帮助类-.NET教程,C#语言

主要实现了以下的函数

代码中出现的sidle是我的网名。

/**//* 
* @author wuerping 
* @version 1.0 
* @date 2004/11/30 
* @description: 
*/ 
using system; 
using system.text; 
namespace sidlehelper 

/**//// <summary> 
/// summary description for strhelper. 
/// 命名缩写: 
/// str: unicode string 
/// arr: unicode array 
/// hex: 二进制数据 
/// hexbin: 二进制数据用ascii字符表示 例 字符1的hex是0x31表示为hexbin是 31 
/// asc: ascii 
/// uni: unicode 
/// </summary> 
public sealed class strhelper 

hex与hexbin的转换#region hex与hexbin的转换 
public static void hexbin2hex(byte[] bhexbin, byte[] bhex, int nlen) 

for(int i=0; i<nlen/2; i++) 

if(bhexbin[2*i] <0x41) 

bhex[i] = convert.tobyte(((bhexbin[2*i] - 0x30)<<4) & 0xf0); 

else 

bhex[i] = convert.tobyte(((bhexbin[2*i] - 0x37)<<4) & 0xf0); 
}

if(bhexbin[2*i+1] <0x41) 

bhex[i] |= convert.tobyte((bhexbin[2*i+1] - 0x30) & 0x0f); 

else 

bhex[i] |= convert.tobyte((bhexbin[2*i+1] - 0x37) & 0x0f); 



public static byte[] hexbin2hex(byte[] bhexbin, int nlen) 

if(nlen%2 !=0) 
return null; 
byte[] bhex = new byte[nlen/2]; 
hexbin2hex(bhexbin, bhex, nlen); 
return bhex; 

public static void hex2hexbin(byte[] bhex, byte[] bhexbin, int nlen) 

byte c; 
for(int i=0;i<nlen;i++) 

c = convert.tobyte((bhex[i]>>4) & 0x0f); 
if(c < 0x0a) 

bhexbin[2*i] = convert.tobyte(c + 0x30); 

else 

bhexbin[2*i] = convert.tobyte(c + 0x37); 

c = convert.tobyte(bhex[i]&0x0f); 
if(c < 0x0a) 

bhexbin[2*i+1] = convert.tobyte(c + 0x30); 

else 

bhexbin[2*i+1] = convert.tobyte(c + 0x37); 



public static byte[] hex2hexbin(byte[] bhex, int nlen) 

byte[] bhexbin = new byte[nlen*2]; 
hex2hexbin(bhex, bhexbin, nlen); 
return bhexbin; 

#endregion

数组和字符串之间的转化#region 数组和字符串之间的转化 
public static byte[] str2arr(string s) 

return (new unicodeencoding()).getbytes(s); 

public static string arr2str(byte[] buffer) 

return (new unicodeencoding()).getstring(buffer, 0, buffer.length); 
}

public static byte[] str2ascarr(string s) 

return system.text.unicodeencoding.convert(system.text.encoding.unicode, 
system.text.encoding.ascii, 
str2arr(s)); 
}

public static byte[] str2hexascarr(string s) 

byte[] hex = str2ascarr(s); 
byte[] hexbin = hex2hexbin(hex, hex.length); 
return hexbin; 

public static string ascarr2str(byte[] b) 

return system.text.unicodeencoding.unicode.getstring( 
system.text.asciiencoding.convert(system.text.encoding.ascii, 
system.text.encoding.unicode, 
b) 
); 
}

public static string hexascarr2str(byte[] buffer) 

byte[] b = hex2hexbin(buffer, buffer.length); 
return ascarr2str(b); 

#endregion 

}

(0)

相关推荐

  • bit,bytes 是什么意思?

    bit,bytes 是什么意思? Bit,位  二进制数系统中,每个0或1就是一个位(bit),位是内存的最小单位. Byte,字节  字节是由8个位所组成,可代表一个字符(A~Z).数字(0~9).或符号(,.?!%&+-*/),是内存储存数据的基本单位. 1 byte = 8 bit 1 KB = 1024 bytes =210 bytes 1 MB = 1024 KB = 220 bytes 1 GB = 1024 MB = 230 bytes

  • C语言中的BYTE和char深入解析

    例如,在下面的源程序中""""之内的"你"."好".","."C"."!"."\n"就属于程序要处理的字符. 复制代码 代码如下: #include <stdio.h>int main(void){      printf("你好,C!\n");         return 0;} 该源程序中的其他字符则属于书写源

  • C# 字符串string和内存流MemoryStream及比特数组byte[]之间相互转换

    定义string变量为str,内存流变量为ms,比特数组为bt 1.字符串转比特数组 复制代码 代码如下: (1)byte[] bt=System.Text.Encoding.Default.GetBytes("字符串"); (2)byte[] bt=Convert.FromBase64String("字符串"); 2.字符串转流 复制代码 代码如下: (1)MemoryStream ms=new MemoryStream(System.Text.Encoding.

  • C#中Byte[]和String之间转换的方法

    本文给大家介绍如何在Byte[]和String之间进行转换? 比特(b):比特只有0 1,1代表有脉冲,0代表无脉冲.它是计算机物理内存保存的最基本单元. 字节(B):8个比特,0-255的整数表示 编码:字符必须编码后才能被计算机处理.早期计算机使用7为AscII编码,为了处理汉字设计了中文简体GB2312和big5 字符串与字节数组之间的转换,事实上是现实世界的信息和数字世界信息之间的转换,势必涉及到某种编码方式,不同的编码方式将导致不同的转换结果.C#中常使用System.Text.Enc

  • C#中两个byte如何相加

    发现问题 有人会想相加?还不简单,用 + 呀. byte a = 1; byte b = 2; byte c = a + b; 以上代码是通不过编译的,因为编译器对待 + 时,有 int 相加.有 decimal 相加.有字符串相加--就是没有 byte 相加,所以它会用最接近的 int 相加,自然返回的结果也是 int,而 int 类型是不能直接赋值给更小的 byte 类型的. 解决方法 所以,得改成这样: byte a = 1; byte b = 2; byte c = (byte)(a +

  • C# byte数组与Image相互转换的方法

    功能需求: 1.把一张图片(png bmp jpeg bmp gif)转换为byte数组存放到数据库. 2.把从数据库读取的byte数组转换为Image对象,赋值给相应的控件显示. 3.从图片byte数组得到对应图片的格式,生成一张图片保存到磁盘上. 这里的Image是System.Drawing.Image. 以下三个函数分别实现了上述三个需求: 复制代码 代码如下: // Convert Image to Byte[]        private byte[] ImageToByte(Im

  • Java中字符串与byte数组之间的相互转换

    前言 Java与其他语言编写的程序进行tcp/ip socket通讯时,通讯内容一般都转换成byte数组型,java在字符与数组转换也是非常方便的.下面跟我一起来了解一下字符串与byte之间转换的原理 原理 我们都知道,在Java里byte类型是占用1个字节,即8位的,而16进制的字符占用4位,所以每个byte可以用两个字符来表示,反之亦然. 举个例子 byte = 123 用二进制表示:0111 1011 每4位用字符表示: 7 b 是的,原理就这么简单,接下来用代码实现: byte[] 转1

  • Python每天必学之bytes字节

    Python中的字节码用b'xxx'的形式表示.x可以用字符表示,也可以用ASCII编码形式\xnn表示,nn从00-ff(十六进制)共256种字符. 一.基本操作 下面列举一下字节的基本操作,可以看出来它和字符串还是非常相近的: In[40]: b = b"abcd\x64" In[41]: b Out[41]: b'abcdd' In[42]: type(b) Out[42]: bytes In[43]: len(b) Out[43]: 5 In[44]: b[4] Out[44]

  • C#中Byte转换相关的函数

     1.将一个对象转换为byte对象 public static byte GetByte(object o) { byte retInt = 0; if (o != null) { byte tmp; if (byte.TryParse(o.ToString().Trim(), out tmp)) { retInt = tmp; } } return retInt; } 2.将一个十六进制字符串转换为byte对象,字符串以0x开头 public static byte GetByteFormHe

  • C#实现Stream与byte[]之间的转换实例教程

    本文以实例形式详细介绍了C#实现Stream与byte[]之间的转换的方法,分享给大家供大家参考之用.具体方法如下: 一.二进制转换成图片 MemoryStream ms = new MemoryStream(bytes); ms.Position = 0; Image img = Image.FromStream(ms); ms.Close(); this.pictureBox1.Image 二.C#中byte[]与string的转换代码 1. System.Text.UnicodeEncod

  • C# Stream 和 byte[] 之间的转换

    /* - - - - - - - - - - - - - - - - - - - - - - - -   * Stream 和 byte[] 之间的转换  * - - - - - - - - - - - - - - - - - - - - - - - */ /// <summary> /// 将 Stream 转成 byte[] /// </summary> public byte[] StreamToBytes(Stream stream) {     byte[] bytes 

随机推荐