从文件读入16进制数转化为10进制数再输出到文件中

sSN LMDscandata 1 1 B98C27 0 0 85C0 85C3 F55D73C5 F55DCC81 0 0 7 0 0 1388 168 0 1 DIST1 3F800000 00000000 DBBA0 1388 B5 136C 1373 136B 1389 1398 1356 136D 1386 137B 139C 13C4 13F7 1531 174D 1751 1755 1765 176C 1777 177B 1784 1791 1796 17A8 17C0 17C6 17C8 17E8 17F0 17FD 1802 180F 1824 1838 184A 184D 1862 1874 1890 189F 18AE 18BC 18DF 18E8 18FC 1910 1936 1946 1963 1976 1995 19A6 19BF 19E1 19FD 1A14 1A28 1A50 1A72 1A96 1AB1 1AD6 1AF1 1B10 1B37 1B58 1B83 1BAC 1BCE 1BF0 1C23 1C46 1C6C 1C98 1CC9 1D0F 1D34 1D69 1D99 1DC8 1DF9 1E35 1E6C 1EAB 1EDE 1F1E 1F40 1F94 1FDA 200E 2048 2090 20E3 212B 2178 21CA 2216 226C 22C5 2326 2376 23C6 2441 2499 2500 255A 25C3 262E 2692 2709 278B 2809 2894 2904 29A2 2A14 2ABA 2B54 2BDE 2C90 2D2A 2DE4 2EA8 2F7B 303F 3117 31DD 32BB 33B0 34C5 35CF 36B6 37E8 390C 3A22 3B57 3CD0 3E1C 3FA3 4151 42E1 44A9 4651 483E 4A1F 4C1E 4C3F 4D74 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0sSN LMDscandata 1 1 B98C27 0 0 85C1 85C4 F55DC248 F55E1B25 0 0 7 0 0 1388 168 0 1 DIST1 3F800000 00000000 DBBA0 1388 B5 1374 1376 1363 1384 139B 136A 1368 1388 1382 139D 13C7 13FF 1530 1746 175E 175B 1759 1769 177E 177A 1788 179C 17AC 17AD 17B9 17C7 17CF 17DC 17DF 17F4 1810 181E 1829 182E 1836 184E 1862 186D 1886 1890 18B2 18C6 18CC 18E3 18FE 1915 1929 1945 1965 197D 1990 19A6 19C5 19D1 19E8 1A1A 1A2C 1A49 1A70 1A9B 1AB1 1AD4 1AF9 1B11 1B3F 1B61 1B87 1BA4 1BD3 1BF3 1C12 1C4B 1C76 1C98 1CC7 1CF8 1D43 1D71 1D91 1DD0 1DFD 1E3C 1E6B 1EAA 1EE2 1F24 1F4C 1F94 1FCC 2008 204E 20A2 20E1 2134 217D 21C3 2211 2269 22BC 231B 237F 23DA 2432 249D 24F6 2562 25CB 263C 26A2 2705 2788 2809 2896 2921 299A 2A25 2AB8 2B53 2BDF 2C95 2D21 2DEC 2EA9 2F69 3028 3115 31E3 32BE 33AB 34B7 35A9 36D4 37EF 38F9

将他们转化为10进制 非16进制数直接输出

方法一:

#include <iostream>
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
using namespace std;
int main()
{
    char c[1005];
    while(cin>>c)
    {
        if(strcmp(c,"sSN")==0)
        {
            cout<<c<<" ";
            continue;
        }
        else if(strcmp(c,"0sSN")==0)
        {
            cout<<c<<" ";
            continue;
        }
        else if(strcmp(c,"LMDscandata")==0)
        {
            cout<<c<<" ";
            continue;
        }
        else if(strcmp(c,"0")==0)
        {
            cout<<c<<" ";
            continue;
        }
        int len=strlen(c);
        long long i,ans=0,b=1,d;
        for(i=len-1;i>=0;i--)
        {
            if(c[i]>=‘A‘&&c[i]<=‘F‘)
            d=c[i]-‘A‘+10;
            else
            d=c[i]-‘0‘;
            ans+=b*d;
            b*=16;
        }
        cout<<ans<<" ";
    }
    return 0;
}

方法二:

#include <iostream>
#include <string.h>
#include <stdio.h>
using namespace std;
int main()
{
    long long n;
    char c[1005];
    while(scanf("%s",c)!=EOF)
    {
        if(strcmp(c,"sSN")==0)
        {
            cout<<c<<" ";
            continue;
        }
        else if(strcmp(c,"0sSN")==0)
        {
            cout<<c<<" ";
            continue;
        }
        else if(strcmp(c,"LMDscandata")==0)
        {
            cout<<c<<" ";
            continue;
        }
        else if(strcmp(c,"0")==0)
        {
            cout<<c<<" ";
            continue;
        }
        sscanf(c,"%llx",&n); //从字符串读入一个数
        printf("%lld ",n);
    }
    return 0;
}

把代码存成AC.cpp 把输入文件存成data.in 再新建一个文本文档 输入 AC < data.in > data.out 以后缀名bat保存

运行bat即可生成文件data.out

时间: 2024-10-13 23:28:02

从文件读入16进制数转化为10进制数再输出到文件中的相关文章

c语言将2进制数转化为10进制数(栈的初始化,进栈,出栈)

1 //c语言描述 将2进制转化为10进制 2 #include <stdio.h> 3 #include <stdlib.h> 4 #include <math.h> 5 #define STACK_INIT_SIZE 20 6 #define //栈满后再分配 7 8 typedef char ElemType; 9 typedef struct 10 { 11 ElemType *base; //栈底 12 ElemType *top; //栈底 13 int s

c++描述将一个2进制数转化成10进制数(用到初始化栈,进栈,入栈)

1 /* 2 c++描述将2进制数转化成10进制数 3 问题,1.初始化栈后,用new,不知道delete是否要再写一个函数释放内存, 4 还是在哪里可以加上delete 5 2.如果栈满了,我要分配多点空间,我想的办法是先用delete删除之前申请的 6 空间,再用new重新申请,但是c语言有一个函数 7 s->base =(ElemType*) realloc(s->base,(s->stackSize + STACKINCREMENT) * sizeof(ElemType));//

C#中2、8、16进制 有符号转换10进制正负数

曾经让我苦想的其他进制转有符号整型问题,结果自己想到方法解决后才发现原来如此简单. 1.Int16(2个byte长度 ) : 方法 :Convert.ToInt16(进制编码,进制) a.16进制转10进制(带正负的) 方法:Convert.ToInt16(16进制编码,16); 负数例如:(16进制)FFFF=(10进制)-1    解决:C#代码:Convert.ToInt16("FFFF",16);  结果:-1 正数例如:(16进制)1E0=(10进制)480   解决:C#代

华为笔试练习题----解析9进制,11进制的字符串为10进制的数字输出

                                                                              解析9进制,11进制的字符串为10进制的数字输出 描述: 解析9进制,11进制的字符串为10进制的数字输出,输入的字符串有效位(0v0012345678)长度不超过8位,前面的00不算做有效位.解析后以10进制的数字输出.如果解析到非法字符串则返回-1 9进制: 9进制的数的范围:0,1,2,3,4,5,6,7,8 9进制的开始为:0V或者0

32位16进制浮点数转化成10进制数

{ BYTE s[4]; s[3]=0x42; s[2]=0x1C; s[1]=0x80; s[0]=0x00; float *pf=(float*)s; printf("10进制%g\n",*pf); }

MFC中如何将16进制字符转化成10进制,包括CString与char*的转换

1 CString m_str; 2 m_str="1F"; //16进制字符为1F 3 m_str = "0x"+m_str; 4 char *p= (char*)((LPCTSTR)m_str); //将CString的字符m_str转化成char*型,并赋值给指针p 5 char *str; 6 int m_Speed = (int)strtol(p, &str, 16); //十六进制转化成10进制,并赋值给整形数据m_Speed

给定一个16进制字符串,返回10进制数

1 private static int getDecimal(String strHex){ 2 3 char[] t = {'0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f'}; 4 int len = strHex.length(); 5 int result = 0; 6 for(int i = len;i>0;i--){ 7 char c = strHex.charAt(i-1); 8 for(int j=0;

M进制数转化为N进制数

2<=N,M<=36 输入为0~9 A~Z 输出0~9 a~z X任意大小 #include<iostream> #include<string> #include<cmath> #include<algorithm> #include<stdio.h> using namespace std; int a[1000],s[1000]; int main() { int n,m,k,f; string x; while(scanf(&

十进制和n进制的转换(10进制转换为36进制)

答案如下: void Convert() { map<int ,string> maps; maps[0]="0"; maps[1]="1"; maps[2]="2"; maps[3]="3"; maps[4]="4"; maps[5]="5"; maps[6]="6"; maps[7]="7"; maps[8]="8&quo