swchar.c 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. /************************************************************************
  2. * AUTHOR: NiuJiuRu
  3. * FILENAME: swchar.c
  4. * DESCRIPTION: 字符操作扩展函数
  5. * NOTE:
  6. * HISTORY:
  7. * 1, [2010-08-17] created by NiuJiuRu
  8. ***********************************************************************/
  9. #include "swapi.h"
  10. #include "swchar.h"
  11. /* 在一个char内, 根据外部输入的位置信息(0 <= pos <= 7), 得到它所对应的二进制位的值 */
  12. char sw_char_getBit(char c, int pos)
  13. {
  14. if(pos < 0 || pos > 7) return -1;
  15. return (c >> pos) & 0x01;
  16. }
  17. /* 在一个char内, 根据外部输入的位置信息(0 <= pos <= 7), 设置它所对应的二进制位的值 */
  18. bool sw_char_setBit(char *c, int pos, char bit)
  19. {
  20. if(!c || (pos < 0 || pos > 7)) return false;
  21. if(bit == 0x00) *c &= ~(0x01 << pos);
  22. else if(bit == 0x01) *c |= (0x01 << pos);
  23. else return false;
  24. return true;
  25. }
  26. /* 在一个char数组内, 根据外部输入的位置信息(pos >= 0), 得到它所对应的二进制位的值 */
  27. char sw_chararry_getBit(const char *buf, int bufSize, int pos)
  28. {
  29. if(!buf || bufSize <= 0 || (pos < 0 || pos > bufSize*8-1)) return -1;
  30. return sw_char_getBit(buf[pos/8], pos%8);
  31. }
  32. /* 在一个char数组内, 根据外部输入的位置信息(pos >= 0), 设置它所对应的二进制位的值 */
  33. bool sw_chararry_setBit(char *buf, int bufSize, int pos, char bit)
  34. {
  35. if(!buf || bufSize <= 0 || (pos < 0 || pos > bufSize*8-1)) return false;
  36. return sw_char_setBit(&buf[pos/8], pos%8, bit);
  37. }