(MATLAB与数学建模习题)不一样的十六进制

21 篇文章 2 订阅

(MATLAB与数学建模习题)不一样的十六进制

by 今天不飞了

从课代表那里搞到一套题(MATLAB与数学建模),越做越开心。重温一次读书考试的感觉


题目

使用字母ABCD…OP,共16个字母来表示1、2、3、…16,共16个数,则AA代表17,AB代表18,BA代表33,以此类推。请设计一个程序,能够实现输入一个正整数,输出对应的字母表示,并计算数字4000,10000的字母值。


代码

功能在函数num2hex里,下面用题目中数字进行测试

clear; clc
numList = [16,18,33,4000,10000];
for n = 1:length(numList)
    num = numList(n);
    str = num2hex(num);
    disp([num2str(num),' = ',str])
end

%---------function-----------
function str = num2hex(num)
% 【十进制转十六进制】
% 十进制转十六进制
hex = dec2hex(num); 
% 十六进制转十进制分别保存
tmp = zeros(1,length(hex),'int8');
len = length(hex);
for n = 1:len
    tmp(n) = hex2dec(hex(n));
end

% 【转新型十六进制】
for n = len:-1:1
    % 最高位处理
    if n==1 && tmp(1)==0
        tmp(1) = [];
    end
    % 若当前位为0,向前借1
    if tmp(n)<=0
        tmp(n) = 16+tmp(n);
        tmp(n-1) = tmp(n-1)-1;
    end
end

% 【数字转字母】
str = '';
for n = 1:length(tmp)
    str = strcat(str,char(tmp(n)+64)); % ASCII
end

end


其他

哔哩哔哩讲解视频不一样的十六进制(MATLAB)

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 9
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值