连接单个字符并转换为c ++中的组合小数

bvk

我有一个将记录的信息存储为.pcap文件的传感器。我设法将文件加载到一个未签名的char数组中。传感器以唯一的格式存储信息。例如,代表290.16的角度,它将信息存储为二进制等效值0x58 0x71。

为了获得正确的角度,我要做的是将0x71和0x58连接起来,然后将所得的十六进制值转换为十进制除以100的十进制值,然后将其存储以进行进一步分析。

我当前的方法是这样的:

//all header files are included

main
{
 unsigned char data[50]; //I actually have the data loaded in this from a file
 data[40] = 0x58;  
 data[41] = 0x71;
 // The above maybe incorrect. What i am trying to imply is that if i use the statement
 // printf("%.2x %.2x", data[40],data[41]); 
 // the resultant output you see on screen is 
 // 58 71

 //I get the decimal value i wanted using the below statement
 float gar = hex2Dec(dec2Hex(data[41])+dec2Hex(data[40]))/100.0;
}

hex2Dec和dec2Hex是我自己的函数。

unsigned int hex2Dec (const string Hex)
{
    unsigned int DecimalValue = 0;
    for (unsigned int i = 0; i < Hex.size(); ++i)
    {
        DecimalValue = DecimalValue * 16 + hexChar2Decimal (Hex[i]);
    }

    return DecimalValue;
}


string dec2Hex (unsigned int Decimal)
{
    string Hex = "";

    while (Decimal != 0)
    {
        int HexValue = Decimal % 16;

        // convert deimal value to a Hex digit
        char HexChar = (HexValue <= 9 && HexValue >= 0 ) ? 
            static_cast<char>(HexValue + '0' ) : static_cast<char> (HexValue - 10 + 'A');

        Hex = HexChar + Hex;
        Decimal = Decimal /16;
    }

    return Hex;
}

int hexChar2Decimal (char Ch)
{
    Ch= toupper(Ch); //Change the chara to upper case
    if (Ch>= 'A' && Ch<= 'F')
    {
        return 10 + Ch- 'A';
    }
    else
        return Ch- '0';
}

痛苦的是,我必须进行数十亿次转换,这确实减慢了该过程。还有其他有效的方法来处理这种情况吗?

我的朋友为类似的传感器开发的matlab代码花了他3个小时来提取仅价值1分钟实时的数据。我真的需要尽快。

用户名

据我所知,这与

float gar = ((data[45]<<8)+data[44])/100.0;

对于:

unsigned char data[50];
data[44] = 0x58;  
data[45] = 0x71;

gar290.16

说明:

不必将整数的值转换为字符串以获取十六进制值,因为十进制,十六进制,二进制等仅是同一值的不同表示形式。data[45]<<8data[45]八位的值向左移动。在执行操作之前,将操作数的类型提升为int(可能是某些异常的实现除外unsigned int),因此新数据类型应足够大而不会溢出。向左移动八位等效于十六进制表示形式向左移动两位数。结果是0x7100然后将的值data[44]添加到该值,您将得到0x7158int然后将type的结果强制转换为float并除以100.0

通常,int如果它只有16位长,可能太小而无法应用移位操作而不移位符号。如果要解决这种情况,请显式转换为unsigned int

float gar = (((unsigned int)data[45]<<8)+data[44])/100.0;

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

连接文本中的单个字符

来自分类Dev

将字符串列表转换为Clojure中的单个字符串

来自分类Dev

将实体中的列表转换为数据库中的单个字符串列

来自分类Dev

从网页中抓取的表格被读取为单个字符向量:如何转换为数据帧?

来自分类Dev

VB 将 2 个数据行转换为数组中的单个字符串

来自分类Dev

在C中输入单个字符

来自分类Dev

python连接字符串中的单个字符

来自分类Dev

JS中的正则表达式以查找每个单词的第一个字符并转换为大写

来自分类Dev

将对象数组转换为单个字符串并将其推送到同一数组中

来自分类Dev

typcast不会将整个字符串转换为int(在C中)

来自分类Dev

将char *作为单个字符读取(在C中)

来自分类Dev

如何在C中扫描单个字符?

来自分类Dev

将char *读取为单个字符(在C中)

来自分类Dev

如何将字段中的每个字符替换为单个字符(但文本长度相同)

来自分类Dev

将字符向量转换为带换行符的单个字符串,另存为R中的对象

来自分类Dev

将C数组中的一个字符转换为大写会给出C4244警告

来自分类Dev

如何将列表的所有内容转换为单个字符串以作为dataframe.select()中的参数传递?

来自分类Dev

从列表中删除单个字符

来自分类Dev

在Vim中插入单个字符?

来自分类Dev

从列表中删除单个字符

来自分类Dev

替换StringBuffer中的单个字符

来自分类Dev

使用Python将字符串中的字符转换为多个字符

来自分类Dev

将bash参数连接到带空格的单个字符串中

来自分类Dev

Windows批处理:将字符串拆分为单个字符并转换为变量

来自分类Dev

Java:如何将字符串中的每个字符转换为“*”(空格除外)

来自分类Dev

从C中的字符串数组中获取单个字符

来自分类Dev

如何在C中的字符串数组中更改单个字符串?

来自分类Dev

读取一行并转换为c中的字符串

来自分类Dev

将单个字符串与C中的字符串数组进行比较

Related 相关文章

  1. 1

    连接文本中的单个字符

  2. 2

    将字符串列表转换为Clojure中的单个字符串

  3. 3

    将实体中的列表转换为数据库中的单个字符串列

  4. 4

    从网页中抓取的表格被读取为单个字符向量:如何转换为数据帧?

  5. 5

    VB 将 2 个数据行转换为数组中的单个字符串

  6. 6

    在C中输入单个字符

  7. 7

    python连接字符串中的单个字符

  8. 8

    JS中的正则表达式以查找每个单词的第一个字符并转换为大写

  9. 9

    将对象数组转换为单个字符串并将其推送到同一数组中

  10. 10

    typcast不会将整个字符串转换为int(在C中)

  11. 11

    将char *作为单个字符读取(在C中)

  12. 12

    如何在C中扫描单个字符?

  13. 13

    将char *读取为单个字符(在C中)

  14. 14

    如何将字段中的每个字符替换为单个字符(但文本长度相同)

  15. 15

    将字符向量转换为带换行符的单个字符串,另存为R中的对象

  16. 16

    将C数组中的一个字符转换为大写会给出C4244警告

  17. 17

    如何将列表的所有内容转换为单个字符串以作为dataframe.select()中的参数传递?

  18. 18

    从列表中删除单个字符

  19. 19

    在Vim中插入单个字符?

  20. 20

    从列表中删除单个字符

  21. 21

    替换StringBuffer中的单个字符

  22. 22

    使用Python将字符串中的字符转换为多个字符

  23. 23

    将bash参数连接到带空格的单个字符串中

  24. 24

    Windows批处理:将字符串拆分为单个字符并转换为变量

  25. 25

    Java:如何将字符串中的每个字符转换为“*”(空格除外)

  26. 26

    从C中的字符串数组中获取单个字符

  27. 27

    如何在C中的字符串数组中更改单个字符串?

  28. 28

    读取一行并转换为c中的字符串

  29. 29

    将单个字符串与C中的字符串数组进行比较

热门标签

归档