zoukankan
html css js c++ java
[收藏]C#中string与byte[]的转换帮助类.NET教程,C#语言
在写c#程序时,string和byte[]之间的转换比较烦,在移植一些老程序时感觉很不好。我在c#中使用des和tripledes时移植一块老代码时也遇到了同样的情况。为了下次不为同样的事情烦恼,就写了下面的帮助类。
主要实现了以下的函数
代码中出现的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
}
}
查看全文
相关阅读:
JavaScript中的编码函数
Redis 客户端命令总结
Java 实现网络图片的读取与下载
JavaScript实现单张图片上传功能
HTML+CSS实现页面豆腐块布局和图片居中
Java 获取当前项目所在服务器的 IP 地址
JavaScripts中关于数字的精确计算方法
遍历HashMap的四种方法
java中URL 的编码和解码函数
equals ==
原文地址:https://www.cnblogs.com/goody9807/p/773728.html
最新文章
java源程序---可执行文件(.exe)----安装包
转!!Java JTable 根据表格内容 自动调整表格列宽
MYSQL 编码方式 ------导入 .sql 文件 报编码错误
转!!MYSQL数据类型
Java JTable 表格 获取存储路径,文件名 ,导出excel表格
转!!各种数据库的jdbc驱动下载及连接方式
转!!以太网方案设计
【Linux】Linux中常用操作命令
phpstorm+Xdebug断点调试PHP
Memcached和Memcache安装(64位win7)
热门文章
PHP 5.2 5.3 5.4 5.5 memcache dll扩展
smarty中用truncate来截取中英文字符串及避免中文乱码问题
ecshop后台登录频繁自动退出问题终极解决方法集锦
全面剖析Smarty缓存机制二[清除缓存方法]
全面剖析Smarty缓存机制一[三种缓存方式]
mysql常用操作语句
jquery中$.ajax方法提交表单
SVN 客户端 TortoiseSVN 的安装和使用
Eclipse 中打包插件 Fat Jar 的安装与使用
JavaScript中关于页面URL地址的获取
Copyright © 2011-2022 走看看