求二进制字符串转十进制字符串的方法,不要权相加法不能数字运算

GoToCSND 2019-11-04 04:26:55

万万没想到,我被二进制转十进制这种基础给难住了,求二进制字符串转十进制字符串的方法。

网上找了好几天,全都只有一种方法,就是需要加法运算的权相加法。

现在我的需求是,必须 字符串到字符串 ,不能数字运算,也不能先转成数字,再数字转成字符串。

求大神指点,谢谢。
...全文
279 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
千梦一生 2019-11-29
  • 打赏
  • 举报
回复
循环,大数的乘法
  • 打赏
  • 举报
回复
我看你结帖了,问题解决了吗?
  • 打赏
  • 举报
回复
引用 14 楼 GoToCSND的回复:
[quote=引用 11 楼 啥都不懂所以不当程序猿 的回复:]
是不是你的二进制代码很长所以认为int范围无法存储转换过来的十进制数?那么你的二进制代码串有多长?ToInt32能够转换32位的二进制代码,你觉得不够,那么ToInt64能够转换64位二进制代码,你的二进制代码串超过了64位吗?先转成数字再转成字符串,只是转换过程中临时占据了点内存,.ToString一运行成功之间占据的内存就被释放了,如果你的二进制代码没有超过32位,ToInt32就能满足你的需求,超过32位不超过64位,ToInt64就能满足你的需求。超过了64位那么就想别的办法。你先回答我你的二进制代码串究竟能有多长


说到点子上了,很长很长,超过 64位 ,所以这个没法转换。[/quote] 如何很长的话,那么是没有直接转换的方法的,需要你自己分段来写。给你一个思路,应该可行,就是实际做起来肯定比较麻烦。 假如你的位数不会超过128位,也就是两个64位,你可以用这样的方式来做。 假设二进制位数是120位,对其进行拆分成56位和64位的二进制字符串,56位和64位的直接可以用TOint64.tostring来换算成对应的字符串,假设转换成的字符串是a,b。 那么这个120位的二进制字符串怎样计算出呢?,2^64×a的值+b的值。这里就会遇到大位数相乘,但是大位数相乘网上是有实例的,你找到了直接复制对应的代码过来就行了。 2^64×a的值解决了,假设为c,后面需要解决的就是c+b,这又涉及到大位数相加,也有实例,复制过来就行了。 结果就得到了。 如果你的二进制长度比128位还要多,那么也就是不断分段用大位数相乘和大位数相加不断迭代,这样就能够得出结果。但是128位转换就比较难了,你这还要超过128位,啥项目涉及这么大的数字?2的128次方这数字已经是天文了。
MYsce 2019-11-05
  • 打赏
  • 举报
回复
使用Convert.toString的方法转换 https://blog.csdn.net/zhouyingge1104/article/details/94609317
GoToCSND 2019-11-05
  • 打赏
  • 举报
回复
引用 12 楼 wanghui0380 的回复:
显然你不知道BigInteger,显然你不知道,即使是你看的所谓XX园XXX高级大数字符串计算也的先分段计算在拼接

显然现在的学生小学的时候不学“珠算乘法”
珠算乘法就是典型的分段计算,在拼接的搞法。他先高位算放在一边,然后再和低位的拼接。


BigInteger 确实是大数计算非常好用。如果你真正使用时,你就会发现,它的功能仅仅只写了一半,除了内存计算它好用外,非内存计算方面它完全不实用,因为其它相关联的东西都不支持 BigInteger。
GoToCSND 2019-11-05
  • 打赏
  • 举报
回复
引用 11 楼 啥都不懂所以不当程序猿 的回复:
是不是你的二进制代码很长所以认为int范围无法存储转换过来的十进制数?那么你的二进制代码串有多长?ToInt32能够转换32位的二进制代码,你觉得不够,那么ToInt64能够转换64位二进制代码,你的二进制代码串超过了64位吗?先转成数字再转成字符串,只是转换过程中临时占据了点内存,.ToString一运行成功之间占据的内存就被释放了,如果你的二进制代码没有超过32位,ToInt32就能满足你的需求,超过32位不超过64位,ToInt64就能满足你的需求。超过了64位那么就想别的办法。你先回答我你的二进制代码串究竟能有多长


说到点子上了,很长很长,超过 64位 ,所以这个没法转换。
wanghui0380 2019-11-05
  • 打赏
  • 举报
回复
微软给你准备的东西 https://www.cnblogs.com/pengpeng1208/p/9227604.html
wanghui0380 2019-11-05
  • 打赏
  • 举报
回复
引用 8 楼 GoToCSND 的回复:
[quote=引用 4 楼 wanghui0380 的回复:] 请问“公元2019年11月4号离公元元年有多少天”,不准用数字计算
显然你没有遇到超过数据定义的情况。 现有的定义,数字计算不了。[/quote] 显然你不知道BigInteger,显然你不知道,即使是你看的所谓XX园XXX高级大数字符串计算也的先分段计算在拼接 显然现在的学生小学的时候不学“珠算乘法” 珠算乘法就是典型的分段计算,在拼接的搞法。他先高位算放在一边,然后再和低位的拼接。
  • 打赏
  • 举报
回复
引用 3 楼 GoToCSND 的回复:
[quote=引用 2 楼 啥都不懂所以不当程序猿 的回复:]
小弟,百度功夫不行啊!进制转换本来就有相应的方法。
https://www.cnblogs.com/icebutterfly/p/8884023.html
成功了记得给分


谢谢。 Convert 不能满足需求,它并不能 字符串到字符串呀[/quote]
是不是你的二进制代码很长所以认为int范围无法存储转换过来的十进制数?那么你的二进制代码串有多长?ToInt32能够转换32位的二进制代码,你觉得不够,那么ToInt64能够转换64位二进制代码,你的二进制代码串超过了64位吗?先转成数字再转成字符串,只是转换过程中临时占据了点内存,.ToString一运行成功之间占据的内存就被释放了,如果你的二进制代码没有超过32位,ToInt32就能满足你的需求,超过32位不超过64位,ToInt64就能满足你的需求。超过了64位那么就想别的办法。你先回答我你的二进制代码串究竟能有多长
  • 打赏
  • 举报
回复
引用 3 楼 GoToCSND 的回复:
[quote=引用 2 楼 啥都不懂所以不当程序猿 的回复:]
小弟,百度功夫不行啊!进制转换本来就有相应的方法。
https://www.cnblogs.com/icebutterfly/p/8884023.html
成功了记得给分


谢谢。 Convert 不能满足需求,它并不能 字符串到字符串呀[/quote]
我有点搞不懂你的需求,字符串到字符串,中途怎么就不能够先转成int再装成string?
dim str1 as string="0101"
dim str2 as string=Convert.ToInt32(str1 2).ToString

这样也是一条语句转换,会对你的程序有什么影响?
  • 打赏
  • 举报
回复
重点到后面才说出来,启题时就应该说明,若使用BigInteger不爽的话,那就使用我的字符串四则运算,字符串的长度够不?
  • 打赏
  • 举报
回复
数据库
引用 7 楼 GoToCSND 的回复:
[quote=引用 6 楼 智者知已应修善业 的回复:]
只能用字符串的话,那就需要从二进制的0到二进制的有限范围的字符串数组,用匹配数组的序号获得对应十进制的数,因此,不需要转换的计算。


如果你说的是预先准备好每一个值,再一一匹配的话,这也是一项超级大的工程啊,由于数值实在太大,将浪费很多内存。 要是其他更好的办法,能详细介绍一下吗[/quote]
GoToCSND 2019-11-04
  • 打赏
  • 举报
回复
引用 4 楼 wanghui0380 的回复:
请问“公元2019年11月4号离公元元年有多少天”,不准用数字计算


显然你没有遇到超过数据定义的情况。 现有的定义,数字计算不了。
GoToCSND 2019-11-04
  • 打赏
  • 举报
回复
引用 6 楼 智者知已应修善业 的回复:
只能用字符串的话,那就需要从二进制的0到二进制的有限范围的字符串数组,用匹配数组的序号获得对应十进制的数,因此,不需要转换的计算。


如果你说的是预先准备好每一个值,再一一匹配的话,这也是一项超级大的工程啊,由于数值实在太大,将浪费很多内存。 要是其他更好的办法,能详细介绍一下吗
  • 打赏
  • 举报
回复
只能用字符串的话,那就需要从二进制的0到二进制的有限范围的字符串数组,用匹配数组的序号获得对应十进制的数,因此,不需要转换的计算。
jx315425246 2019-11-04
  • 打赏
  • 举报
回复
byte a=0x50; string s=a.ToString("D");
wanghui0380 2019-11-04
  • 打赏
  • 举报
回复
请问“公元2019年11月4号离公元元年有多少天”,不准用数字计算
GoToCSND 2019-11-04
  • 打赏
  • 举报
回复
引用 2 楼 啥都不懂所以不当程序猿 的回复:
小弟,百度功夫不行啊!进制转换本来就有相应的方法。
https://www.cnblogs.com/icebutterfly/p/8884023.html
成功了记得给分


谢谢。 Convert 不能满足需求,它并不能 字符串到字符串呀
  • 打赏
  • 举报
回复
小弟,百度功夫不行啊!进制转换本来就有相应的方法。
https://www.cnblogs.com/icebutterfly/p/8884023.html
成功了记得给分
OrdinaryCoder 2019-11-04
  • 打赏
  • 举报
回复
必须是字符串到字符串 能想到的最起码都得用加法 坐等大神

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧