利用Golang怎么将整数转换为字符串

  介绍

这篇文章主要为大家详细介绍了利用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怎么将整数转换为字符串