1. C# / Говнокод #16097

    +133

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    //checks if the string is a hex stream e.g. "31 32 33 6A F8"
            private bool _IsHexStream(string sValue)
            {
                sValue = sValue.Trim();
    
                
                if (sValue.Length < 2)
                {
                    return false;
                }
    
                for (int i = 0; i < sValue.Length; i++)
                {
                    if(_IsHexChar(Convert.ToChar(sValue.Substring(i,1))) == false)
                    {
                        return false;
                    }
                }
    
                //every third char must be a space, only possible in case of two bytes
                if (sValue.Length > 3)
                {
                    for (int i = 2; i < sValue.Length; i += 3)
                    {
                        string sBuffer = sValue.Substring(i, 1);
    
                        if (sBuffer.Equals(" ") == false)
                        {
                            return false;
                        }
                    }
                }
    
                //string is a hex stream 
                return true;
            }

    Запостил: blackhearted, 02 Июня 2014

    Комментарии (22) RSS

    • а _IsHexChar() как реализован?
      if(char == '1') return true;
      ...
      if(char == 'F') return true;
      return false
      Ответить
      • Blackhearted, присоединяюсь к вопросу
        Ответить
        • char в шарпе зарезервированное слово, дурень
          Ответить
          • Есть такое слово: "псевдокод".
            Ответить
            • даже в псевдокоде действуют правила здравого смысла. например не называть переменные именами стандартных типов.
              Ответить
      • //checks if the char is possible in a hex stream 
                private bool _IsHexChar(char sChar)
                {
                    switch (sChar)
                    {
                        case 'a':
                        case 'A':
                        case 'b':
                        case 'B':
                        case 'c':
                        case 'C':
                        case 'd':
                        case 'D':
                        case 'e':
                        case 'E':
                        case 'f':
                        case 'F':
                        case '0':
                        case '1':
                        case '2':
                        case '3':
                        case '4':
                        case '5':
                        case '6':
                        case '7':
                        case '8':
                        case '9':
                        case ' ':
                            return true;
                        default:
                            return false;
        
                    }
                }
        Ответить
    • "Это Гениально! Шедевр!"
      Я все могу понять, но почему он использует sValue.Substring(i,1), вместо sValue[i] я не могу понять
      Ответить
      • Не уверен как в шарпе, но обычно substring для пустой строки вернет пустую строку, а [i] вызовет исключение. Конечно длина проверяется выше, но мало ли, вдруг где-нибудь ошибешься и не проверишь.
        Ответить
      • видимо потому что sValue[i] выдает чар, а хочется закатывать солнце руками
        Ответить
    • static bool IsHexString(string hexString)
              {
                  var isFirstHexSing = false;
                  foreach (var ch in hexString)
                  {
                      if (IsHexSing(ch))
                      {
                          isFirstHexSing = ! isFirstHexSing;
                      }
                      else
                      {
                          if (ch != ' ' || isFirstHexSing)
                              return false;
                      }
                  } return !isFirstHexSing;
              }
      
              private static bool IsHexSing(char ch)
              {
                  return (ch >= '0' && ch <= '9') || (ch >= 'a' && ch <= 'f') || (ch >= 'A' && ch <= 'F');
              }
      Ответить

    Добавить комментарий