C#中string与byte[]的转换帮助类

简介:


* @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是 '3''1' 
/// Asc: ASCII 
/// Uni: UNICODE 
/// </summary> 
public sealed class StrHelper 

#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 

}




本文转自94cool博客园博客,原文链接:http://www.cnblogs.com/94cool/articles/1499350.html,如需转载请自行联系原作者


相关文章
|
1月前
|
开发框架 .NET C#
C#|.net core 基础 - 删除字符串最后一个字符的七大类N种实现方式
【10月更文挑战第9天】在 C#/.NET Core 中,有多种方法可以删除字符串的最后一个字符,包括使用 `Substring` 方法、`Remove` 方法、`ToCharArray` 与 `Array.Copy`、`StringBuilder`、正则表达式、循环遍历字符数组以及使用 LINQ 的 `SkipLast` 方法。
|
2月前
|
Java 索引
java基础(13)String类
本文介绍了Java中String类的多种操作方法,包括字符串拼接、获取长度、去除空格、替换、截取、分割、比较和查找字符等。
39 0
java基础(13)String类
|
1月前
|
Java
【编程基础知识】(讲解+示例实战)方法参数的传递机制(值传递及地址传递)以及String类的对象的不可变性
本文深入探讨了Java中方法参数的传递机制,包括值传递和引用传递的区别,以及String类对象的不可变性。通过详细讲解和示例代码,帮助读者理解参数传递的内部原理,并掌握在实际编程中正确处理参数传递的方法。关键词:Java, 方法参数传递, 值传递, 引用传递, String不可变性。
57 1
【编程基础知识】(讲解+示例实战)方法参数的传递机制(值传递及地址传递)以及String类的对象的不可变性
|
1月前
|
安全 Java 测试技术
Java零基础-StringBuffer 类详解
【10月更文挑战第9天】Java零基础教学篇,手把手实践教学!
28 2
|
1月前
|
存储 安全 C++
【C++打怪之路Lv8】-- string类
【C++打怪之路Lv8】-- string类
22 1
|
2月前
|
安全 Java
String类-知识回顾①
这篇文章回顾了Java中String类的相关知识点,包括`==`操作符和`equals()`方法的区别、String类对象的不可变性及其好处、String常量池的概念,以及String对象的加法操作。文章通过代码示例详细解释了这些概念,并探讨了使用String常量池时的一些行为。
String类-知识回顾①
|
1月前
|
数据可视化 Java
让星星月亮告诉你,通过反射创建类的实例对象,并通过Unsafe theUnsafe来修改实例对象的私有的String类型的成员属性的值
本文介绍了如何使用 Unsafe 类通过反射机制修改对象的私有属性值。主要包括: 1. 获取 Unsafe 的 theUnsafe 属性:通过反射获取 Unsafe类的私有静态属性theUnsafe,并放开其访问权限,以便后续操作 2. 利用反射创建 User 类的实例对象:通过反射创建User类的实例对象,并定义预期值 3. 利用反射获取实例对象的name属性并修改:通过反射获取 User类实例对象的私有属性name,使用 Unsafe`的compareAndSwapObject方法直接在内存地址上修改属性值 核心代码展示了详细的步骤和逻辑,确保了对私有属性的修改不受 JVM 访问权限的限制
52 4
|
1月前
|
存储 安全 Java
【一步一步了解Java系列】:认识String类
【一步一步了解Java系列】:认识String类
25 2
|
1月前
|
安全 C语言 C++
【C++篇】探寻C++ STL之美:从string类的基础到高级操作的全面解析
【C++篇】探寻C++ STL之美:从string类的基础到高级操作的全面解析
36 4
|
1月前
|
存储 编译器 程序员
【C++篇】手撕 C++ string 类:从零实现到深入剖析的模拟之路
【C++篇】手撕 C++ string 类:从零实现到深入剖析的模拟之路
65 2