日期:2014-05-18  浏览次数:21033 次

字符串补位问题
比如我有个字符串 string a="abcd5de",刚好是奇数 但是我现在需要的一个方法里 这个字符串必须是偶数
if ((a.Length % 2) != 0) a+= " "; 我是这么想的 但是 貌似 计算的时候 还是当成奇数

我的整个方法 如下

public byte[] strToHexByte(string hexString)
  {
  hexString = "abcd5de";
  if ((hexString.Length % 2) != 0)
  hexString += " ";
  byte[] returnBytes = new byte[hexString.Length / 2];
  for (int i = 0; i < returnBytes.Length; i++)
  returnBytes[i] = Convert.ToByte(hexString.Substring(i * 2, 2),16);
  return returnBytes;
  }

------解决方案--------------------
是string.Format吧?传进strToHexByte方法之后都会是一个确定的字符串,不可能有占位符的了,你试试补0吧,应该没问题的。
或者你就什么都不补了,最后一位没有的话就只取一位吧,这样
C# code

public static byte[] strToHexByte(string hexString)
{
    hexString = "abcd5d0e";
    byte[] returnBytes = new byte[(int)Math.Ceiling(hexString.Length / 2.0)];
    for (int i = 0; i < returnBytes.Length; i++)
        returnBytes[i] = Convert.ToByte(hexString.Substring(i * 2, (i * 2 == hexString.Length - 1) ? 1 : 2), 16);
    return returnBytes;
}