单个字符转换16进制数

来源:百度知道 编辑:UC知道 时间:2024/05/14 08:15:48
小弟正在沿袭Bjarne Stroustrup的《C++程序设计语言(特别版)》 遇到难题为:
将打印的字母转换为十六进制,如'a',...'z','0'...'9'
我的想法是能否在库中找到这一函数,如不能,请告知其他方法,望不吝赐教
请用C++语言,呵呵

//---------------------------------------------------------------------------
#include <iostream>
#include <iomanip>

int main(void)
{
char i;
for (i='0'; i<='9'; ++i) std::cout<<i<<'\t'<<std::hex<<(int)i<<std::endl;

for (i='a'; i<='z'; ++i) std::cout<<i<<'\t'<<std::hex<<(int)i<<std::endl;

return 0;
}
//---------------------------------------------------------------------------

没有这样的库函数
你可以这样求
首先条件是a是接在9后面的 这样做起来方便
用0-9,a-f来表示16进制数
对某个字母r这样求(r-‘a’+10)/16
这样来记录该字母的高位(为零则不用表示出来)
然后(r-'a'+10)%16
这样记录该字母的低位
对数字 因为它本身小于16 可以直接表示出来
上面这个方法只适合于单个字母 对一个字符串的处理可以类推得到结果 注意进位和最高位

std::cout<<i<<'\t'<<std::hex<<(int)i<<std::endl;
改为std::cout<<i<<'\t'<<&q