一个关于Byte[]的问题
下面这段代码主要目的是将字符串装到字节数组里面,ToUper()是转换成大写,但是最终目的不是转换成大写,如果去掉的话,就会报内存错误byte[] strBytes=Encoding.ASCII.GetBytes(strHex.ToUpper()); --------------------编程问答-------------------- ToString()看看 --------------------编程问答-------------------- .ToString() --------------------编程问答-------------------- 把你要转换的字符串贴出来看看.. --------------------编程问答-------------------- 不好意思各位,上面没有说清楚,strHex它本身就是一个字符串
public static byte[] HexToBytes(string strHex) {
byte[] strBytes=Encoding.ASCII.GetBytes(strHex.ToUpper());
int nCount=strBytes.Length/2;
int i;
for(i=0;i<nCount;i++){
byte tpVal;
if ( strBytes[2 * i] >=65 && strBytes[2 * i] <=70 ) {
tpVal = (byte)((strBytes[2 * i] - 65 + 10) * 16);
} else if( strBytes[2 * i] >= 48 && strBytes[2 * i] <= 57 ){
tpVal = (byte)((strBytes[2 * i] - 48 ) * 16);
}else{
break;
}
if ( strBytes[2 * i+1] >=65 && strBytes[2 * i+1] <=70 ) {
tpVal += (byte)(strBytes[2 * i + 1] - 65 + 10);
} else if( strBytes[2 * i+1] >= 48 && strBytes[2 * i+1] <= 57 ){
tpVal += (byte)(strBytes[2 * i+1] - 48);
}else{
break;
}
strBytes[i]=tpVal;//缓存在strBytes中
}
if (i == 0) {
return null;
} else {
byte[] arrRet=new byte[i];
Array.Copy(strBytes,0,arrRet,0,i);
return arrRet;
}
} --------------------编程问答-------------------- 怀疑是你的strHex里面保存了一些非法字符,而调用ToUpper,会去掉这些非法字符从而使你的GetBytes方法成功调用。楼主最好把这个strHex的具体内容贴出来看看。
--------------------编程问答-------------------- 先将strHex进行处理. --------------------编程问答-------------------- 去除特殊字符。 --------------------编程问答-------------------- 测试过,里面字符串里面没有特殊字符.咳,第一次遇到这样的问题
补充:.NET技术 , C#