![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-12 13:35 |
共 47,811 主题排行 / 349,897 发帖 / 今日 0 篇 / 48,256 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » [已解决]10进制与16进制互转问题 |
| 可打印版本 1,070 / 8 |
| 第1楼 suntb | 发表于 2009-10-08 17:00 |
| 高级用户 发帖 277 积分 581 | |
|
[已解决]10进制与16进制互转问题 具体情况如下:
因为要写一个注册某软件的批处理,需要将序列号(纯数字)转换为对应的16进制,经过系列换算后再将新的16进制数据再转回10进制 比如: 2319692668 转换成16进制后应该是 8a43b37c 反过来16进制的 8a43b37c 转换成10进制应该是 2319692668 但是我在CMD中用set /a 0x8a43b37c得到的结果却是 -1975274628 这是怎么回事? [ Last edited by suntb on 2009-10-8 at 21:22 ] |
|
| 第2楼 Hanyeguxing | 发表于 2009-10-08 17:48 |
| 银牌会员 发帖 897 积分 1,039 来自 在地狱中仰望天堂 | |
|
因为批处理或cmd下,只能精确到32位,这个32位是指二进制32位,其中最高位为符号位(0为正,1为负),低位31位为数值。
31个1换成十进制为2147483647,所以cmd下计算的有效值范围是 -2147483648 至 2147483647 。 你的数字大于这个数值范围,溢出了。。。。。。 [ Last edited by Hanyeguxing on 2009-10-8 at 17:56 ] |
|
| 第3楼 suntb | 发表于 2009-10-08 18:18 |
| 高级用户 发帖 277 积分 581 | |
Originally posted by Hanyeguxing at 2009-10-8 17:48: 谢谢 怎么解决? |
|
| 第4楼 terse | 发表于 2009-10-08 20:14 |
| 银牌会员 发帖 946 积分 2,404 | |
|
给个10转多进制的 支持大数
你逆算一下 |
|
| 第5楼 suntb | 发表于 2009-10-08 21:21 |
| 高级用户 发帖 277 积分 581 | |
Originally posted by terse at 2009-10-8 20:14: |
|
| 第6楼 terse | 发表于 2009-10-08 23:41 |
| 银牌会员 发帖 946 积分 2,404 | |
|
自己逆算一下 应该可以了吧
|
|
| 第7楼 netbenton | 发表于 2009-10-09 08:16 |
| 银牌会员 发帖 752 积分 1,916 来自 广西 | |
|
这不是件易事哦!
关键是溢出,要分段来做加法和乘法 16制(后7位+7位前的*268435456) 建议还是用三方吧 [ Last edited by netbenton on 2009-10-9 at 06:22 ] |
|
| 第8楼 terse | 发表于 2009-10-09 23:14 |
| 银牌会员 发帖 946 积分 2,404 | |
|
发现变量int为空 最后显示空 修正下
另把补位的去掉 直接加 [ Last edited by terse on 2009-10-10 at 23:02 ] |
|
| 第9楼 suntb | 发表于 2009-10-10 16:19 |
| 高级用户 发帖 277 积分 581 | |
Originally posted by terse at 2009-10-9 23:14: |
|
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |