VerySource

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
楼主: weiranli00

求解binary转换问题

[复制链接]

2

主题

22

帖子

14.00

积分

新手上路

Rank: 1

积分
14.00
 楼主| 发表于 2020-3-19 20:30:01 | 显示全部楼层
Convert.FromBase64String(inputValue);
那怎么将inputValue的值转换成byte[]类型
回复

使用道具 举报

0

主题

4

帖子

4.00

积分

新手上路

Rank: 1

积分
4.00
发表于 2020-3-20 21:00:02 | 显示全部楼层
将byte[]转换为string Convert.ToBase64String(inputValue);
将string转换为byte[] Convert.FromBase64String(inputValue);
回复

使用道具 举报

2

主题

22

帖子

14.00

积分

新手上路

Rank: 1

积分
14.00
 楼主| 发表于 2020-3-22 06:30:01 | 显示全部楼层
但是cmd.Parameters["@UserName"].value的类型是Object类型的啊
回复

使用道具 举报

2

主题

22

帖子

14.00

积分

新手上路

Rank: 1

积分
14.00
 楼主| 发表于 2020-3-22 13:15:01 | 显示全部楼层
ParameterDirection.Output;

改为:

ParameterDirection.ReturnValue;

我试过了,好像不可以
回复

使用道具 举报

0

主题

15

帖子

10.00

积分

新手上路

Rank: 1

积分
10.00
发表于 2020-3-23 15:30:01 | 显示全部楼层
Sql 的Binay 对应用 byte[]来接收
byte[] b = cmd.Parameters["@UserName"].value;

从byte[]到string 的转化 需要提供编码类型
就是说你必须清楚 数据库中以binary形式存放的字符串是那种编码的

一般就2种: System.Text.Encoding.Default
或者System.Text.Encoding.UTF8
回复

使用道具 举报

0

主题

15

帖子

10.00

积分

新手上路

Rank: 1

积分
10.00
发表于 2020-3-23 20:00:02 | 显示全部楼层
从你上面的代码看
可能都是用的UTF32

byte[] b = cmd.Parameters["@UserName"].value;
string sUserName = Encoding.UTF32.GetString(b);
回复

使用道具 举报

2

主题

22

帖子

14.00

积分

新手上路

Rank: 1

积分
14.00
 楼主| 发表于 2020-3-24 19:45:01 | 显示全部楼层
byte[] b = cmd.Parameters["@UserName"].value;
string sUserName = Encoding.UTF32.GetString(b);


错误        1        无法将类型“object”隐式转换为“byte[]”。存在一个显式转换(是否缺少强制转换?)
回复

使用道具 举报

2

主题

22

帖子

14.00

积分

新手上路

Rank: 1

积分
14.00
 楼主| 发表于 2020-3-24 22:30:01 | 显示全部楼层
object类型又要如何转换成byte[]类呢?谢谢!
回复

使用道具 举报

2

主题

22

帖子

14.00

积分

新手上路

Rank: 1

积分
14.00
 楼主| 发表于 2020-3-31 09:30:01 | 显示全部楼层
代码如下:
SqlCommand cmd = new SqlCommand("UsmgcfoxsExict",conn);
cmd.CommandType = CommandType.StoredProcedure;

cmd.Parameters.Add(new SqlParameter("@Uid",SqlDbType.Binary,30));
cmd.Parameters["@Uid"].Value = Encoding.UTF32.GetBytes(paraUid);

cmd.Parameters.Add(new SqlParameter("@UserName",SqlDbType.Binary,30));
cmd.Parameters["@UserName"].Direction = ParameterDirection.Output;

conn.Open();
cmd.ExecuteNonQuery();
conn.Close();

想获取cmd中的参数"@UserName"的值且转换为string类型,参数"@UserName"是binary类型的,

用:
byte[] b = cmd.Parameters["@UserName"].value;
string sUserName = Encoding.UTF32.GetString(b);

但又出现以下错误:
错误        1        无法将类型“object”隐式转换为“byte[]”。存在一个显式转换(是否缺少强制转换?)
回复

使用道具 举报

0

主题

11

帖子

11.00

积分

新手上路

Rank: 1

积分
11.00
发表于 2020-3-31 18:00:01 | 显示全部楼层
byte[] b = (byte[])cmd.Parameters["@UserName"].value;
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|CopyRight © 2008-2023|verysource.com ( 京ICP备17048824号-1 )

快速回复 返回顶部 返回列表