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
}
}
查看全文
相关阅读:
大厂机密!30 个提升团队研发效能的锦囊
爆肝 200 小时,我做了个编程导航!
AJAX数据传输之请求与发送
JS高级技巧之函数节流
JS实战笔记
JS获取DOM元素位置与大小
JS实现快排算法
构造可重用的Ajax对象
JS字符串操作总结
JS常用函数小结
原文地址:https://www.cnblogs.com/goody9807/p/773728.html
最新文章
LINQ联接查询
javascript 改变select 的选项
HTML标签内字体垂直居中方法
联合主键建立方法
NHibernate 配置参数
转换日期格式的“笨”办法:使用正则表达式
乾坤大挪移:无需重新安装将Windows XP 家庭版升级到Windows XP 专业版
Repeater 相关的几个重要属性和方法
Javascript 调用 ActionScript 方法
日期转换需要注意的事项,解析日期格式的字符串
热门文章
Flex Builder 快捷键
Repeater一例,通过名称引用repeated组件
多种方式在List中显示图片
在ComboBox下拉列表中显示具有多行的文本
愛情の名言
Single Sign On Central Authentication System for .NET 2.0 Custom Applications
用asp做了个网站
用Windows的批处理批量更改文件名
揭秘软件开发中的达摩克利斯之剑
腾讯公测云开发低码!全网首篇实战评测
Copyright © 2011-2022 走看看