zoukankan      html  css  js  c++  java
  • 给出一个十六进制的数0xFF 0x80 (只有2“位”) 将其转换成有符号的一字节的十进制整数

    #include <stdio.h>
    #include<iostream>
    #include <stdlib.h>
    #include<string.h>
    using namespace std;
    int main()
    {
    char ch[8];
    char ch2[8]={'0','0','0','0','0','0','0','0'};

    ltoa(strtol("0xba",'',16),ch,2);
    //cout<<strlen(ch);
    for(int i=8-strlen(ch),j=0;i<8;i++,j++)
    {

    ch2[i]=ch[j];
    }

    if(ch2[0]=='1')
    {
    cout<<"minus:"<<endl;
    cout<<"-"<<(256-strtol("0xba",'',16)) <<endl;
    }
    else{
    cout<<"+:"<<endl;
    cout<<strtol("0xba",'',16)<<endl;
    }
    return 0;
    }

    ^(* ̄(oo) ̄)^:红色数字部分为const char*类型;

    主要应用的函数为:strtol;ltoa

    第一个函数是将第一个参数里的字符串转换为十进制,遇到结束,后边的数字2-36,指的是前边的字符串代表的数字进制,而不是将其转换为某进制。

    strtol是将第一个参数的数字转换成第三个参数的进制并存入第二个参数的数组里。char *ltoa(long value,char *string,int radix)

    原码,反码,补码,运算不介绍,这里只是采取投机取巧的方式。。。。

    之所以用了ch2是因为ltoa只是把二进制从一开始的有效位赋给ch从零开始。前边如果有0 ,它并没有进行赋值。

    例如:long(strtol)转换后的二进制为:00010101---》ltoa只把10101赋给了ch[0]=1,ch[1]=0,ch[2]=1,ch[3]=0,ch[4]=1....ch[5]=null.....以此类推。。。。。。

  • 相关阅读:
    java上传1t文件
    上传1T文件
    超过20g的文件+上传
    文件批量下载
    下载超大文件的控件
    Java上传大文件夹
    Java超大文件上传解决办法
    vue+大文件上传控件
    cocos2dx3.1 win7安装步骤及编译到安桌
    Muller’s method (website)
  • 原文地址:https://www.cnblogs.com/8335IT/p/4853432.html
Copyright © 2011-2022 走看看