parsescore.c 517 B

12345678910111213141516171819202122232425262728293031
  1. #include <u.h>
  2. #include <libc.h>
  3. #include <oventi.h>
  4. int
  5. vtParseScore(char *buf, uint n, uchar score[VtScoreSize])
  6. {
  7. int i, c;
  8. memset(score, 0, VtScoreSize);
  9. if(n != VtScoreSize*2)
  10. return 0;
  11. for(i=0; i<VtScoreSize*2; i++){
  12. if(buf[i] >= '0' && buf[i] <= '9')
  13. c = buf[i] - '0';
  14. else if(buf[i] >= 'a' && buf[i] <= 'f')
  15. c = buf[i] - 'a' + 10;
  16. else if(buf[i] >= 'A' && buf[i] <= 'F')
  17. c = buf[i] - 'A' + 10;
  18. else
  19. return 0;
  20. if((i & 1) == 0)
  21. c <<= 4;
  22. score[i>>1] |= c;
  23. }
  24. return 1;
  25. }