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
}
}
查看全文
相关阅读:
Node Sass version 5.0.0 is incompatible with^4.0.0
Vue v-html 的使用
SQL 判断时间是否为空
Element UI 表单验证
Mybatis-Plus根据条件更新
语法检查工具 http://jshint.com/
安装node_modules文件遇到的问题:更改代理
知识点3: 学习中遇到的问题
Vue: 用 key 管理可复用的元素
Vue遇到的问题
原文地址:https://www.cnblogs.com/goody9807/p/773728.html
最新文章
hdu 2087 剪花布条
高精度乘法
hdu1002 高精度加法
stack
hdu 1568 Fibonacci
python基础一 day20 模块的导入
python基础一 day27 类的内置方法
python基础一 day27 反射
python基础一 day27 复习
python基础一 day18 作业
热门文章
python基础一 day17 二分查找算法
python基础一 day17 初识递归
python基础一 day17 作业
python基础一 day16 匿名函数
python基础一 day17 复习
Vue 父组件调用子组件方法
JS 浅拷贝与深拷贝
div 实现光标悬停变成手型
JS 判断空字符串
JS 两个等号(==)与三个等号(===)的区别
Copyright © 2011-2022 走看看