zoukankan      html  css  js  c++  java
  • visual studio中如何将string类型值转为BYTE(unsigned char)类型

    昨天困惑一件事,就是手里有个string类型的字符串,像01 23 45 67 89 AB CD EF,根据空格拆分为一个个的子字符串后(如EF),需要放到一个BYTE(typedef unsigned char)类型数组中,该怎么放呢?

    首先BYTE是个什么类型?

    BYTE即unsigned char,说白了就是0-255的数字。
    visual studio里为什么专门定义了一个BYTE呢?

    个人理解,因为默认如果你定义一个char myChar, 那myChar类型就默认是signed char,存放的值-128-127。所以专门定义了unsigned char。

    可以看到还有专门定义的unsigned int,unsigned short,都是一个道理!

    那像01 ,EF这样的字符串怎么转为BYTE呢?

    方法一、

    直接调用库函数HexToDec(string)转。

    比如HexToDec(EF),结果为239。

    方法二、

    先将字符串转为16进制,sscanf("EF","%02X",&HexKeyValue);

    然后16进制强制类型转换即可,(BYTE)HexKeyValue

    下面是我写的一段代码,实现string到BYTE数组的转换

    typedef unsigned char BYTE;
    typedef unsigned char* LPBYTE;

    LPBYTE spaceStrToByte(char* pSrc,int &length)
    {
    char *pKeyValue = (char*)pSrc;
    BYTE bt[50];

    char * substr = strtok(pKeyValue," ");
    int i=0;
    while(substr!=NULL)
    {

    int DecKeyValue=0 ,HexKeyValue=0;
    sscanf(substr,"%02X",&HexKeyValue);
    bt[i] = (BYTE)HexKeyValue;
    i++;
    substr = strtok(NULL," ");
    }
    length = i;
    LPBYTE lpBt = ((LPBYTE)bt);
    printf("spaceStrToByte--%02X",*lpBt);
    return lpBt;

    }

  • 相关阅读:
    14-3 SQL Server基本操作
    14-2 SQL语言简介
    14-1数据库基础--数据库相关技术
    2.9_Database Interface ADO结构组成及连接方式实例
    2.8_Database Interface ADO由来
    2.7_Database Interface OLE-DB诞生
    容器化技术之K8S
    容器化技术之Docker
    NLP(二)
    cmake
  • 原文地址:https://www.cnblogs.com/jieliujas/p/8818678.html
Copyright © 2011-2022 走看看