我有这样段代码
private static byte[] HexStringToByteArray(string s)
{
s = s.Replace(" ", "");
if (s.Length % 2 != 0)
{
s += " ";
}
byte[] buffer = new byte[s.Length / 2];
for (int i = 0; i < s.Length; i++)
{
buffer[i] = Convert.ToByte(s.Substring(i * 2, 2), 16);
}
return buffer;
}
在转换的过程我跟踪调试,当跑到for循环里面时,报将字串符转换成datetime日期格式的错误,我这里没有这东西啊!怎么会报这样的错误呢?
private static byte[] HexStringToByteArray(string s)
{
s = s.Replace(" ", "");
if (s.Length % 2 != 0)
{
s += " ";
}
byte[] buffer = new byte[s.Length / 2];
for (int i = 0; i < s.Length; i++)
{
buffer[i] = Convert.ToByte(s.Substring(i * 2, 2), 16);
}
return buffer;
}
在转换的过程我跟踪调试,当跑到for循环里面时,报将字串符转换成datetime日期格式的错误,我这里没有这东西啊!怎么会报这样的错误呢?
解决方案 »
- 在线等,installshield怎样部署.net3.5或4.0
- 问个菜鸟问题,小弟我初稿。net
- 再问关于取反运算(怎么越小的问题越拿人啊)
- C# WINFORM 中如何改变窗体大小??
- 关于Socket接收数据包根据格式取值问题(急!!!!!!!)
- 急, 大问题不过很平常 。 web服务器运行不是asp.net1.1 版。 您将无法运行asp.net web应用程序或服务
- 问两个关于更方便地在文本框中提交数据的实现方法
- 怎樣取得我DataGrid裡面的記錄條數,請各位再幫幫忙?
- 做图书管理系统用户权限不论登陆时是什么都是管理员权限 怎么改
- c/s客户端任何查看服务器上的图片
- DataGridView 显示问题
- 关于POST的问题:您的请求来路不正确,无法提交。
//字节数组转16进制字符串
/// <summary>
/// 字节数组转16进制字符串
/// </summary>
/// <param name="bytes"></param>
/// <returns></returns>
public static string byteToHexStr(byte[] bytes)
{
string returnStr = "";
if (bytes != null)
{
for (int i = 0; i < bytes.Length; i++)
{
returnStr += bytes[i].ToString("X2");
}
}
return returnStr;
}
if (s.Length % 2 != 0)
{
s += "0";
}
/// <summary>
/// 十六进制字符串转换字节数组(自动去掉空格)
/// </summary>
/// <param name="s">要转换的字符串</param>
/// <returns>转换后的字节数组</returns>
public static byte[] HexStringToByteArray(string s)
{
if (s.Length = 0)
throw new Exception("将16进制字符串转换成字节数组时出错,错误信息:被转换的字符串长度为0。");
s = s.Replace(" ", "");
byte[] buffer = new byte[s.Length / 2];
for (int i = 0; i < s.Length; i += 2)
buffer[i / 2] = Convert.ToByte(s.Substring(i, 2), 16);
return buffer;
}
#endregion
/// 字节数组转换成十六进制字符串(不带空格)
/// </summary>
/// <param name="data">要转换的字节数组</param>
/// <returns>转换后的字符串</returns>
public static string ByteArrayToHexStringNoBlank(byte[] data)
{
StringBuilder sb = new StringBuilder(data.Length * 3);
foreach (byte b in data)
sb.Append(Convert.ToString(b, 16).PadLeft(2, '0'));
return sb.ToString().ToUpper();
}
我都试过了!还是不行!
for (int i = 0; i < buffer.Length; i += 2)
{
string s1 = s.Substring(i, 2);
buffer[i / 2] = Convert.ToByte(s1, 16); }
主要是红色这一句报错,我实在是搞不懂,这关datetime什么事啊!
我随便写的字符串
Message="未找到任何可识别的数字。"
Source="mscorlib"
StackTrace:
在 System.ParseNumbers.StringToInt(String s, Int32 radix, Int32 flags, Int32* currPos)
在 System.Convert.ToByte(String value, Int32 fromBase)
在 ParkingManagementSys.DataAcquisition.CommPort.strToToHexByte(String hexString) 位置 E:\mxlworkspace\ParkingManagementSystem\ParkingManagementSys\ParkingManagementSys\DataAcquisition\CommPort.cs:行号 320
在 ParkingManagementSys.DataAcquisition.CommPort.WriteToSerialPort(String TypeString, String str) 位置 E:\mxlworkspace\ParkingManagementSystem\ParkingManagementSys\ParkingManagementSys\DataAcquisition\CommPort.cs:行号 348
在 ParkingManagementSys.ParamSet.button1_Click(Object sender, EventArgs e) 位置 E:\mxlworkspace\ParkingManagementSystem\ParkingManagementSys\ParkingManagementSys\ParamSet.cs:行号 39
在 System.Windows.Forms.Control.OnClick(EventArgs e)
在 System.Windows.Forms.Button.OnClick(EventArgs e)
在 System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
在 System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
在 System.Windows.Forms.Control.WndProc(Message& m)
在 System.Windows.Forms.ButtonBase.WndProc(Message& m)
在 System.Windows.Forms.Button.WndProc(Message& m)
在 System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
在 System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
在 System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
在 System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG& msg)
在 System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(Int32 dwComponentID, Int32 reason, Int32 pvLoopData)
在 System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context)
在 System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context)
在 System.Windows.Forms.Application.Run(Form mainForm)
在 ParkingManagementSys.Program.Main() 位置 E:\mxlworkspace\ParkingManagementSystem\ParkingManagementSys\ParkingManagementSys\Program.cs:行号 18
在 System.AppDomain._nExecuteAssembly(Assembly assembly, String[] args)
在 System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
在 Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
在 System.Threading.ThreadHelper.ThreadStart_Context(Object state)
在 System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
在 System.Threading.ThreadHelper.ThreadStart()
InnerException:
byte [] buffer=System.Text.Encoding.UTF8.GetBytes("测试汉字English123.");
如果是把16进制数字的“0123456789ABCDEF”转换成16进制的0x000x010x020x030x040x050x060x070x080x090x0A0x0B0x0C0x0D的话就用上上面贴出来的函数。