这篇文章主要为大家详细介绍了利用Golang怎么将整数转换为字符串,文中示例代码介绍的非常详细,具有一定的参考价值,发现的小伙伴们可以参考一下:
什么是Golang
Golang是谷歌开发的一种静态强类型,编译型,并发型,并具有垃圾回收功能的编程语言,其语法与C语言相近,但并不包括如枚举,异常处理,继承,泛型、断言,虚函数等功能。
<强> fmt。Sprintf 强>
fmt包应该是最常见的了,从刚开始学习Golang就接触到了,写“你好,& # 39;就得用它。它还支持格式化变量转为字符串。
func Sprintf(字符串,format a ……接口{}),字符串 Sprintf formats  according 用a format specifier 以及returns 从而resulting 字符串。 fmt.Sprintf (“% d",,)
% d代表十进制整数。
<强> strconv。Itoa 强>
func Itoa(小姐:int),字符串 Itoa is  shorthand for  FormatInt (int64(我),10)。 strconv.Itoa (a)
<强> strconv。FormatInt 强>
func FormatInt(小姐,int64, base int),字符串 FormatInt returns 从而string representation  of 小姐:拷贝,given 基地,for 2, & lt;=, base & lt;=, 36只,result uses 从而lower-case letters “一个# 39;,用“z # 39;, for digit values 祝辞=10。
参数我是要被转换的整数,基础是进制,例如2进制,支持2到36进制。
strconv.Format (int64 (a), 10)
<强>格式的实现
强>
<强>[0,99)的两位整数强>
对于小的(小于等于100)十进制正整数有加速优化算法:
if fastSmalls ,,, 0, & lt;=,小姐:,,,小姐:& lt;, nSmalls ,,, base ==, 10, { ,return 小(int (i)) }
加速的原理是提前算好100年以内非负整数转换后的字符串。
const smallsString =,“00010203040506070809“+ ,“10111213141516171819“+ ,“20212223242526272829“+ ,“30313233343536373839“+ ,“40414243444546474849“+ ,“50515253545556575859“+ ,“60616263646566676869“+ ,“70717273747576777879“+ ,“80818283848586878889“+ 之前,“90919293949596979899”>可以看出来,转换后的结果是从1到99都有,而且每个结果只占两位。当然个人数的情况还得特殊处理,个位数结果只有一位。
func 小(小姐:int), string { ,off :=0 小姐,if & lt;, 10, { off 才能=1 ,} ,return smallsString[我* 2 + off :,我* 2 + 2) }如果被转换的数字是个位数,那么偏移量变成了1,默认情况是0。
只支持2到36进制的转换36进制是10个数字加26个小写字母,超过这个范围无法计算。
var a [64, +, 1]字节整形最大64位,加一位是因为有个符号。转换计算时,要分10进制和非10进制的情况。
<强> 10进制转换强>
10进制里,两位两位转换,为什么这么干?两位数字时100年以内非负整数转换可以用上面的特殊情况加速。很有意思。
us :=,使用uint (u) for us 祝辞=,100,{ ,is :=, us %, 100, * 2 100年,us /=, ,小姐:-=2 ,一个(i + 1)=, smallsString (+ 1) ,一个(+ 0)=,smallsString (+ 0) }<强> 2、4、8、16、32进制的转换。强>
const digits =,“0123456789 abcdefghijklmnopqrstuvwxyz" var shifts =, (len(数字),+,1]使用uint { 1,才能& lt; & lt;, 1:, 1, 1,才能& lt; & lt;, 2:, 2, 1,才能& lt; & lt;, 3:, 3, 1,才能& lt; & lt;, 4:, 4, 1,才能& lt; & lt;, 5:, 5, } if s :=,转变(基地);,s 祝辞,0,{ ,//base is  power of 2:, use shifts 以及masks instead of /以及% ,b :=, uint64(基地) ,m :=,使用uint(基地),安康;1,//,==,1 & lt; & lt; s 作用;1 ,for u 祝辞=,b { ,我—— ,一个[我]=,数字(使用uint (u)和m] ,u 在祝辞=, ,} ,//u & lt;基地 ,我—— ,一个[我]=,数字(使用uint (u)) }通过循环求余实现。进制的转换也是这种方式。
利用Golang怎么将整数转换为字符串