【本文链接】

http://www.cnblogs.com/hellogiser/p/16-to-3-or-k.html

【题目】

写代码把16进制表示的串转换为3进制表示的串。例如x=”5”,则返回:”12”;又例如:x=”F”,则返回”120”

【代码】

 C++ Code 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
 
/*
    version: 1.0
    author: hellogiser
    blog: http://www.cnblogs.com/hellogiser
    date: 2014/9/22
*/

#include "stdafx.h"
#include <iostream>
#include <stack>
using namespace std;

int getvalue(char c)
{
    if (c >= '0' && c <= '9')
        return c - '0';
    else if (c >= 'a' && c <= 'f')
        ;
    else if (c >= 'A' && c <= 'F')
        ;
    ;
}

// "f" ===>15
int GetString16Value(char *str)
{
    if(str == NULL || *str == '\0')
        ;
    ;
    while(*str != '\0')
    {
        result = result *  + getvalue(*str);
        str ++;
    }
    return result;
}

void output(stack<int> &s)
{
    while (!s.empty())
    {
        cout << s.top();
        s.pop();
    }
    cout << endl;
}

// f --->15 --->120
/*
15     n%3   n/3
        0     5
        2     1
        1     0
*/
void String16to3(char *str)
{
    if(str == NULL || *str == '\0')
        return;
    int value16 = GetString16Value(str);
    stack<int> result;
    int t;
    // do while(value16)      // if value16=0,then result push 0
    do
    {
        t = value16 % ;
        result.push(t); // save t
;
    }
    while(value16);
    // reverse output, so here we use stack to implement this function
    // 021 ===>120
    output(result);
}

// 16 to K
void String16toK(char *str, unsigned int K)
{
    if(str == NULL || *str == '\0')
        return;
    )
        return;

int value16 = GetString16Value(str);
    stack<int> result;
    int t;
    do
    {
        t = value16 % K;
        result.push(t); // save t
        value16 /= K;
    }
    while(value16);
    // reverse output, so here we use stack to implement this function
    output(result);
}

void test_base(char *str)
{
    String16to3(str);
    String16toK(str, );
}

void test_case0()
{
    char *str = NULL;
    test_base(str);
}

void test_case1()
{
    char str[] = "";
    test_base(str);
}

void test_case2()
{
    char str[] = "0";
    test_base(str);
}

void test_case3()
{
    char str[] = "5";
    test_base(str);
}

void test_case4()
{
    char str[] = "F";
    test_base(str);
}

void test_main()
{
    test_case0(); //
    test_case1(); //
    test_case2(); // 0
    test_case3(); // 12
    test_case4(); // 120
}

int main()
{
    test_main();
    ;
}

【参考】

http://www.cnblogs.com/sooner/p/3280050.html

16进制字符串转换为3进制(扩展至K进制)的更多相关文章

  1. 16进制字符串和byte数组进行相互转换\将10进制转换为任意进制

    16进制字符串和byte数组进行相互转换 简介 1个byte对应8个bit,16进制使用4个bit,所以一个byte转成16进制,占用两位. JAVA代码 private static final c ...

  2. 16进制字符串转换为byte数组

    /// <summary> /// 16进制字符转换为byte数组 /// </summary> /// <param name="hexString" ...

  3. MFC 编辑框输入16进制字符串转换为16进制数或者10进制数据计算

    1.编辑框添加变量,并选择变量类型为CString. 2.  使用“_tcstoul”函数将Cstring 类型转换为16进制/10进制数进行计算.

  4. Java中byte与16进制字符串的互相转换

    * Convert byte[] to hex string.这里我们可以将byte转换成int,然后利用Integer.toHexString(int)来转换成16进制字符串. * @param s ...

  5. [转]Java中byte与16进制字符串的互相转换

    Java中byte用二进制表示占用8位,而我们知道16进制的每个字符需要用4位二进制位来表示(23 + 22 + 21 + 20 = 15),所以我们就可以把每个byte转换成两个相应的16进制字符, ...

  6. Java-byte[]与16进制字符串互转

    转自: http://www.cnblogs.com/freeliver54/archive/2012/07/30/2615149.html Java中byte用二进制表示占用8位,而我们知道16进制 ...

  7. java中 16进制字符串 与普通字符串 与 byte数组 之间的转化

    方法依赖commons-codec包  maven的引入方式如下 <dependency> <groupId>commons-codec</groupId> < ...

  8. BYTE数组与16进制字符串互转

    //字节数组转换为HEX 字符串const string Byte2HexString(const unsigned char* input, const int datasize) { ]; ; j ...

  9. java中byte[] 和16进制字符串互转

    //将byte[]转换为16进制字符串 public static String byte2hex(byte[] b) { StringBuilder hs = new StringBuilder() ...

随机推荐

  1. 经纬度距离计算Java实现代码

    public class test { private static double rad(double d) { return d * Math.PI / 180.0; } public stati ...

  2. 数据库创建用户SQL

    ', default_database=TableName use TableName create user A for login A with default_schema=dbo exec s ...

  3. iOS-iOS 获取蓝色文件夹图片

    Xcode创建的iOS项目内存在两种文件夹:Group(黄色, 伪文件夹) 和Folder(蓝色, 真文件夹): Group: Folder: Images.xcassets或Group文件夹内的PN ...

  4. 【转】随机函数 rand() srand() 以及seed的原理

    from:http://blog.csdn.net/feige2008/article/details/6943885   标准库<cstdlib>(被包含于<iostream> ...

  5. 微信或移动端网页的meta

    针对微信: <meta http-equiv="content-type" content="text/html; charset=UTF-8" /> ...

  6. PHP魔术方法以及关于独立实例与相连实例的讲解

    <?php //魔术方法 //当包含多个类 //1.自动装载类的魔术方法__autoload() function __autoload($classname){ if (isset($clas ...

  7. c#中两种不同的存储过程调用与比较

    存储过程简介 简单的说,存储过程是由一些SQL语句和控制语句组成的被封装起来的过程,它驻留在数据库中,可以被客户应用程序调用,也可以从另一个过程或触发器调用.它的参数可以被传递和返回.与应用程序中的函 ...

  8. 第四天 rxcocoa

    HackerNewsReaderDemo HackerNewsAPI.sharedApi.newStories() .observeOn(ConcurrentDispatchQueueSchedule ...

  9. SpringDataJPA的几个使用记录

    public Page<XMGLFileTemplateDTO> findXMGLFileTemplateByConditions(XMGLFileTemplateDTO xmglFile ...

  10. LA 2678 Subsequence(二分查找)

    题目链接:https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show_ ...