小学期作业中碰到一题进制转换,自己写的过程很是坎坷。
想到没有系统学习过进制转换的知识,于是搜索资料进行一个查漏补缺,本文仅作为学习记录。
[C++]手把手编程实现进制转换_哔哩哔哩_bilibili 模版学习自咸鱼君
http://t.csdn.cn/RXk7C 感谢学长支撑我的小学期(
http://t.csdn.cn/iRV3m 开篇的例子很棒!
任意进制到十进制,十进制到任意进制的转换
十进制到任意进制时使用栈进行存储和输出
输出时使用的字符转换写法
问题描述:
请你编一程序实现两种不同进制之间的数据转换。
输入格式:
共三行,第一行是一个正整数,表示需要转换的数的进制(1<n<16),第二行是一个n进制数,若n>10则使用大写字母A-F表示数码10-15,并且该n进制对应的十进制的值不超过10e9,第三行也是一个正整数,表示转换之后的数的进制(1<m<16)。
输出格式:
一个正整数,表示转换之后的m进制数。
样例输入
16 FF 2
样例输出
11111111
#include<bits/stdc++.h>//万能头
//进制转换
using namespace std;
int main()
{
string num; //需要转换的n进制数,用字符数组char num[maxn]也是一样的
int n, m, ten = 0; //ten为转换成的十进制数
cin >> n >> num >> m;
//1、n进制转换为十进制
int len = num.size(); //获取num长度
for (int i = len-1, k = 0; i >= 0; i--, k++) //从右至左倒序,k为n的k次方(同二进制)
{
int tmp;
if (num[i] >= 'A' && num[i] <= 'F') //如果n大于10
tmp = num[i] - 'A' + 10;
else
tmp = num[i] - '0'; //使用ascii码实现字符->数字的转换
ten += tmp * pow(n, k); //累加
}
//2、十进制转换为m进制,在这里我们使用栈进行存储
stack<char> stk;
while(ten)
{
int u = ten % m;
ten /= m;
char tmp;
if (u < 10)
tmp = u +'0';
else
tmp = u + 'A' - 10;
stk.push(tmp); //入栈
}
//3、输出答案
while(stk.size())//逆序输出
{
cout << stk.top();
stk.pop();
}
cout << endl;
return 0;
}
问题描述:
以往的操作系统内部的数据表示都是二进制方式,小A新写了一个操作系统,系统内部的数据表示为26进制,其中0-25分别由a-z表示。
现在小A要在这个操作系统上实现一个计算器,这个计算器要能实现26进制数的加法运算。
你能帮小A实现这个计算器吗?
输入格式:
输入的第一行包括一个整数N(1<=N<=100)。
接下来的N行每行包括两个26进制数x和y,它们之间用空格隔开,每个数的位数最多为10位,我们可以保证相加的结果的位数最多也是10位。
每个数会用小A所设计的操作系统中的表示方法来表示,如:bsadfasdf。
即每个数的各个位均由26个小写字母a-z中的一个来表示。
输出格式:
输出x和y相加后的结果,结果也要用题目中描述的26进制数来表示。
样例输入
4 ba cd c b b c ba c
样例输出
dd d d bc
#include<bits/stdc++.h>
//小A的计算器:进制转换
using namespace std;
int main()
{
int n;
string x, y; //字符形式存储两个6进制数
cin >> n;
while(n--)
{
cin >> x >> y;
int lenx = x.size();
int leny = y.size();
int a = 0, b = 0; //转换成的十进制数
int sum; //转换成十进制后的总和
//1、26进制转换到十进制
for (int i = lenx - 1, k = 0; i >= 0; i--, k++)
a += (x[i] - 'a') * pow(26, k);
for (int i = leny - 1, k = 0; i >= 0; i--, k++)
b += (y[i] - 'a') * pow(26, k);
sum = a + b;
//cout << sum << endl; //检查一下26进制转到10进制有没有问题
//2、十进制的sum转换到26进制并输出(栈)
stack<char> stk;
while(sum)
{
int u = sum % 26;
sum /= 26;
stk.push(u + 'a'); //入栈
}
//3、输出答案
while(stk.size())//逆序输出
{
cout << stk.top();
stk.pop();
}
cout << endl;
}
return 0;
}
如果你能看到这里,很感谢啦!
这里是yubisco7的CSDN博客,他在这里记录自己的计算机学习过程。
欢迎交流、提出建议或指正错误,希望我们能够共同进步。
我的目标是转换表单输入,例如“100兆字节”或“1GB”,并将其转换为我可以存储在数据库中的文件大小(以千字节为单位)。目前,我有这个:defquota_convert@regex=/([0-9]+)(.*)s/@sizes=%w{kilobytemegabytegigabyte}m=self.quota.match(@regex)if@sizes.include?m[2]eval("self.quota=#{m[1]}.#{m[2]}")endend这有效,但前提是输入是倍数(“gigabytes”,而不是“gigabyte”)并且由于使用了eval看起来疯狂不安全。所以,功能正常,
我想将html转换为纯文本。不过,我不想只删除标签,我想智能地保留尽可能多的格式。为插入换行符标签,检测段落并格式化它们等。输入非常简单,通常是格式良好的html(不是整个文档,只是一堆内容,通常没有anchor或图像)。我可以将几个正则表达式放在一起,让我达到80%,但我认为可能有一些现有的解决方案更智能。 最佳答案 首先,不要尝试为此使用正则表达式。很有可能你会想出一个脆弱/脆弱的解决方案,它会随着HTML的变化而崩溃,或者很难管理和维护。您可以使用Nokogiri快速解析HTML并提取文本:require'nokogiri'h
我需要读入一个包含数字列表的文件。此代码读取文件并将其放入二维数组中。现在我需要获取数组中所有数字的平均值,但我需要将数组的内容更改为int。有什么想法可以将to_i方法放在哪里吗?ClassTerraindefinitializefile_name@input=IO.readlines(file_name)#readinfile@size=@input[0].to_i@land=[@size]x=1whilex 最佳答案 只需将数组映射为整数:@land边注如果你想得到一条线的平均值,你可以这样做:values=@input[x]
这道题是thisquestion的逆题.给定一个散列,每个键都有一个数组,例如{[:a,:b,:c]=>1,[:a,:b,:d]=>2,[:a,:e]=>3,[:f]=>4,}将其转换为嵌套哈希的最佳方法是什么{:a=>{:b=>{:c=>1,:d=>2},:e=>3,},:f=>4,} 最佳答案 这是一个迭代的解决方案,递归的解决方案留给读者作为练习:defconvert(h={})ret={}h.eachdo|k,v|node=retk[0..-2].each{|x|node[x]||={};node=node[x]}node[
我有一个用户工厂。我希望默认情况下确认用户。但是鉴于unconfirmed特征,我不希望它们被确认。虽然我有一个基于实现细节而不是抽象的工作实现,但我想知道如何正确地做到这一点。factory:userdoafter(:create)do|user,evaluator|#unwantedimplementationdetailshereunlessFactoryGirl.factories[:user].defined_traits.map(&:name).include?(:unconfirmed)user.confirm!endendtrait:unconfirmeddoenden
我正在使用Rails构建一个简单的聊天应用程序。当用户输入url时,我希望将其输出为html链接(即“url”)。我想知道在Ruby中是否有任何库或众所周知的方法可以做到这一点。如果没有,我有一些不错的正则表达式示例代码可以使用... 最佳答案 查看auto_linkRails提供的辅助方法。这会将所有URL和电子邮件地址变成可点击的链接(htmlanchor标记)。这是文档中的代码示例。auto_link("Gotohttp://www.rubyonrails.organdsayhellotodavid@loudthinking.
我收到格式为的回复#我需要将其转换为哈希值(针对活跃商家)。目前我正在遍历变量并执行此操作:response.instance_variables.eachdo|r|my_hash.merge!(r.to_s.delete("@").intern=>response.instance_eval(r.to_s.delete("@")))end这有效,它将生成{:first="charlie",:last=>"kelly"},但它似乎有点hacky和不稳定。有更好的方法吗?编辑:我刚刚意识到我可以使用instance_variable_get作为该等式的第二部分,但这仍然是主要问题。
我正在尝试使用Curbgem执行以下POST以解析云curl-XPOST\-H"X-Parse-Application-Id:PARSE_APP_ID"\-H"X-Parse-REST-API-Key:PARSE_API_KEY"\-H"Content-Type:image/jpeg"\--data-binary'@myPicture.jpg'\https://api.parse.com/1/files/pic.jpg用这个:curl=Curl::Easy.new("https://api.parse.com/1/files/lion.jpg")curl.multipart_form_
我正在使用Ruby,我正在与一个网络端点通信,该端点在发送消息本身之前需要格式化“header”。header中的第一个字段必须是消息长度,它被定义为网络字节顺序中的2二进制字节消息长度。比如我的消息长度是1024。如何将1024表示为二进制双字节? 最佳答案 Ruby(以及Perl和Python等)中字节整理的标准工具是pack和unpack。ruby的packisinArray.您的长度应该是两个字节长,并且按网络字节顺序排列,这听起来像是n格式说明符的工作:n|Integer|16-bitunsigned,network(bi
华为OD机试题本篇题目:明明的随机数题目输入描述输出描述:示例1输入输出说明代码编写思路最近更新的博客华为od2023|什么是华为od,od薪资待遇,od机试题清单华为OD机试真题大全,用Python解华为机试题|机试宝典【华为OD机试】全流程解析+经验分享,题型分享,防作弊指南华为o