zoukankan      html  css  js  c++  java
  • 字节转换

    一、宽字节转窄字节

    char* wstr2asc(const short *pSrc, char *pDest)
    {
    char *pTmp=pDest;
    char ctmp=0;
    short stmp=0;

    if (NULL==pSrc)return NULL;

    while (*pSrc)
    {
    ctmp=*pSrc;
    stmp=*pSrc;

    if (ctmp<0)
    {
    *pTmp++=stmp;
    *pTmp|=(stmp>>=8);
    }
    else
    {
    *pTmp=*pSrc;
    }
    pSrc++;
    pTmp++;
    }
    *pTmp='\0';

    return pDest;
    }

    int wstrlen(const short *pSrc)
    {
    short *pTmp=(short*)pSrc;

    while (*pTmp&&pTmp++);

    return pTmp-pSrc;
    }

    char* wstr2asc(const short *pSrc, const int iSrcLen, char *pDest, const int iDestLen)
    {
    char *pTmp=pDest;
    char ctmp=0;
    short stmp=0;
    int i=0;
    int len=wstrlen(pSrc);
    if (NULL==pSrc)return NULL;

    len=len>iSrcLen?iSrcLen:len;
    len=(len*2)>iDestLen?iDestLen:(len*2);
    while (*pSrc && i<len)
    {
    ctmp=*pSrc;
    stmp=*pSrc;

    if (ctmp<0)
    {
    *pTmp++=stmp;
    *pTmp|=(stmp>>=8);
    i++;
    if (i>=len)
    {
    break;
    }
    }
    else
    {
    *pTmp=*pSrc;
    }
    pSrc++;
    pTmp++;
    i++;
    }
    *pTmp='\0';

    return pDest;
    }

    二、窄字节转宽字节

    short* asc2wstr(const char *pSrc,short *pDest)
    {
    short *pTmp = pDest;
    short tmp = 0;

    if (NULL==pSrc)return NULL;

    while(*pSrc)
    {
    if(*pSrc<0)
    {
    *pTmp=*(pSrc+1);
    *pTmp<<=8;
    tmp=*pSrc;
    *pTmp|=(tmp&=0x00ff);
    pSrc++;
    }
    else
    {
    *pTmp=*pSrc;
    }
    pSrc++;
    pTmp++;
    }
    *pTmp&=0;

    return pDest;
    }

    short* asc2wstr(const char *pSrc, const int iSrcLen, short* pDest, const int iDestLen)
    {
    short *pTmp = pDest;
    short tmp=0;
    int len=0;
    int i=0;

    if (NULL==pSrc)return NULL;

    len=strlen(pSrc);
    len=len>iSrcLen?iSrcLen:len;
    len=len>iDestLen?iDestLen:len;

    while(*pSrc && i<len)
    {
    if(*pSrc<0)
    {
    *pTmp=*(pSrc+1);
    *pTmp<<=8;
    tmp=*pSrc++;
    *pTmp|=(tmp&=0x00ff);
    i++;
    if(i>=len)
    {
    *pTmp&=0x00FF;
    pTmp++;
    break;
    }
    }
    else
    {
    *pTmp=*pSrc;
    }
    pSrc++;
    pTmp++;
    i++;
    }
    *pTmp&=0;

    return pDest;
    }

  • 相关阅读:
    Akka源码分析-Akka Typed
    Akka源码分析-Persistence Query
    5位ID生成方案
    Akka源码分析-Akka-Streams-GraphStage
    akka监控框架设计
    Akka源码分析-Akka-Streams-Materializer(1)
    day30-2FileWriter用数组进行复制文件
    day30-1FileInputStream不用数组进行复制文件
    day30-1FileInputStream用数组进行复制文件
    day29-2在d盘创建文件夹aaa 里面有aaa.txt bbb.txt ddd.txt
  • 原文地址:https://www.cnblogs.com/ccmfc/p/2275634.html
Copyright © 2011-2022 走看看