【本文链接】

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. iOS开发工具-网络封包分析工具Charles

    转自唐巧的技术博客:http://blog.devtang.com/blog/2013/12/11/network-tool-charles-intr/ Charles是在Mac下常用的截取网络封包的 ...

  2. 浅谈JavaScript中的Ajax

    引言 作为一名WEB开发者,我想Ajax技术是一定需要掌握的.你也许平时没有使用JavaScript真正的写过Ajax.但是你一定使用过JQuery里面的相关函数来进行异步调用.今天我们就来介绍下原生 ...

  3. UvaLive6661 Equal Sum Sets dfs或dp

    UvaLive6661 PDF题目 题意:让你用1~n中k个不同的数组成s,求有多少种组法. 题解: DFS或者DP或打表. 1.DFS 由于数据范围很小,直接dfs每种组法统计个数即可. //#pr ...

  4. 点击验证码刷新(tp3.1)--超简单

    省略js点击刷新验证码,虽然看不懂 <img src='http://localhost/app/index.php/Index/verify/'  onclick='this.src=this ...

  5. VC++6.0一些常见问题解决方法(打开多个窗口、行号、添加文件无响应、更改.exe图标及名称等等)

    背景: 最近使用VC++6.0做一个界面,供测试CAN通信使用.由于客户希望我们提供简单方便的函数接口让其最快速使用CAN,DLL(动态链接库)是不二之选.做DLL需要两个VC窗口进行测试才方便.可是 ...

  6. 【C语言入门教程】4.9 指向指针的指针

    指针变量可以指向另一个指针变量,这种操作并不是将一个指针变量所指向的内存地址传递给另一个指针变量,而是定义一种指向指针类型的指针变量,可将其称为双重指针.双重指针的定义形式为: 数据类型 **变量名: ...

  7. JS/HTML 保存图片到本地:HTML <a> download 属性

    JS如何保存图片到本地呢?自己百度一下吧! 这里想要说的是,可以利用 HTML 的 <a> 标签 来是实现保存图片到本地的功能,参考代码如下: <a href="http: ...

  8. bootstrap实现弹出窗口

    bootstrap使用modal-dialog实现弹对话框. 一个对话框包含3部分: 对话框头部 modal-header 对话框内容体 modal-body 对话框底部 modal-footer 如 ...

  9. PHP Socket实现websocket(一)基本函数介绍

    WebSocket protocol 是HTML5一种新的协议.它实现了浏览器与服务器全双工通信(full-duplex). 一开始的握手需要借助HTTP请求完成. WebSocket是基于TCP来实 ...

  10. 以下css可以清除浮动

    .clearfix:after { content: ""; clear: both; visibility: hidden; display: block; height: 0p ...