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
}
}
查看全文
相关阅读:
7.Pod控制器—Job&CronJob
6.Pod控制器—DaemonSet
5.Pod控制器—ReplicaSet&Deployment
0.4kubeadm参数说明
14.Open vSwitch实现跨主机的容器之间网络互联
p1144_最短路计数问题
vue在dom绑定点击事件后,同时将值和事件传递
vue中使用lodash的throttle不生效解决方案
vuecli3项目添加pwa支持
flutter for web跨域解决方案
原文地址:https://www.cnblogs.com/goody9807/p/773728.html
最新文章
大数据技术相关方案
设计模式之设计原则
10_python进程
004_python常用模块
003_python对象
一 html基础
ORA-15041
如何使用Topshelf与.NET泛型主机建立Windows服务
Topshelf一个用于使用.NET构建Windows服务框架
IdentityServer4:授权码模式
热门文章
IdentityServer4:客户端凭据模式
IdentityServer4:资源所有者密码模式
IdentityServer4是什么
DDD领域驱动设计:CQRS
DDD领域驱动设计:领域事件
DDD领域驱动设计:仓储
DDD领域驱动设计:实体、值对象、聚合根
Ubuntu20.04 网卡配置
4.1Docker存储对比
10.服务发现Service
Copyright © 2011-2022 走看看