private static byte[] strToToHexByte(string hexString)
{
hexString = hexString.Replace(" ", "");
if ((hexString.Length % 2) != 0)
hexString = " " + hexString;
byte[] returnBytes = new byte[hexString.Length / 2];
for (int i = 0; i < returnBytes.Length; i++)
{
hexString= hexString.Substring(i * 2, 2);
returnBytes[i] = Convert.ToByte(hexString, 16);//转不了
}
return returnBytes;
}老是提示
Convert.ToByte未能找到任何可识别的数字
{
hexString = hexString.Replace(" ", "");
if ((hexString.Length % 2) != 0)
hexString = " " + hexString;
byte[] returnBytes = new byte[hexString.Length / 2];
for (int i = 0; i < returnBytes.Length; i++)
{
hexString= hexString.Substring(i * 2, 2);
returnBytes[i] = Convert.ToByte(hexString, 16);//转不了
}
return returnBytes;
}老是提示
Convert.ToByte未能找到任何可识别的数字
解决方案 »
- 关于gridview传递两个参数
- C#中DataReader操作问题
- winfo c# 哪里有界面组件的下载?
- c#——设置打印预览页的字体高度
- 问个弹出对话框的问题
- 请问有没有简单的方法判断某个Point是否在某个Region中?
- 我用 vs.net 生成sqlconnection 后,在图形界面生成字符串 连接正常,但是放到web.config中总报sql拒绝访问!
- 关于链接的一个小问题,大家都能帮我解决
- 关于remoting的问题,多客户端访问服务器触发线程问题
- 哪里有优秀的.NET书籍下载?
- c# oracle在服务器资源管理器中已连接,但拖动表到.dbm1时出现以下错误:所选对象使用不支持的数据提供程序
- C# 多个目录搜索文件,并找出最近修改的一个文件
{
//怀疑问题出现在这一句. substring(i*2,2)考虑是否会超出hexString的长度?
hexString= hexString.Substring(i * 2, 2);
returnBytes[i] = Convert.ToByte(hexString, 16);//转不了
}
这句执行后,hexString只剩下2个字符,之后必然出错
///<summary>
///将图片转换成16进制
///</summary>
///<param name="FileLoad">图片路径(string)</param>
///<returns>16进制(string)</returns>
public static string Pic(string FileLoad)
{
string PicStr = "";
FileStream fs = new FileStream(FileLoad, FileMode.Open, FileAccess.Read);
BinaryReader br = new BinaryReader(fs);
int length = (int)fs.Length;
while (length > 0)
{
byte TempByte = br.ReadByte();
PicStr += Convert.ToString(TempByte, 16) + " ";
length--;
}
fs.Close();
br.Close();
return PicStr.TrimEnd(' ');
}
/// <summary>
/// 16进制流转图片
/// </summary>
/// <param name="pic16">16进制流数据</param>
/// <returns>图片创建后的路径</returns>
public static string TranSafePic(string pic16)
{
string FileLoad = "D:\\" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".jpg";
FileStream fs = new FileStream(FileLoad, FileMode.Create, FileAccess.Write);//创建图片存放路径
BinaryWriter bw = new BinaryWriter(fs);
char[] separator = { ' ' };
String[] splitStrings = new String[pic16.Length];
splitStrings = pic16.Split(separator);
int i = 0;
while (i < splitStrings.Length)
{
byte tempByte = Convert.ToByte(splitStrings[i],16);
bw.Write(tempByte);
i++;
}
fs.Close();
bw.Close();
return FileLoad;
}
byte[] tempb = strToToHexByte(" AA CC 1E D4 C3 C");
会不会存在上面的数据
第二,
if ((hexString.Length % 2) != 0)
hexString = " " + hexString;
如果存在不完整的数据,加上一个" "数据也是错误的,并且要养成良好的编码习惯,加大括号{}也不费事
第三,你的 hexString= hexString.Substring(i * 2, 2);取值有问题
下一次循环 你的hexString 值是上次的取值结果,已经把原数据冲掉了