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;

    }

  • 相关阅读:
    第06组 Alpha冲刺(4/6)
    第06组 Alpha冲刺(3/6)
    第06组 Alpha冲刺(2/6)
    第06组 Alpha冲刺(1/6)
    第06组 团队Git现场编程实战
    团队项目-需求分析报告
    团队项目-选题报告
    洛谷3195 玩具装箱(dp,斜率优化)
    CF 1334(edu85) F. Strange Function(线段树,dp)
    CF1325E. Ehab's REAL Number Theory Problem(最小环)
  • 原文地址:https://www.cnblogs.com/jieliujas/p/8818678.html
Copyright © 2011-2022 走看看