首页 > 其他分享 >Go中的整数到字符串的转换

Go中的整数到字符串的转换

时间:2024-01-20 12:44:26浏览次数:22  
标签:转换 fmt strconv 整数 字符串 65 Go

在Go语言中,我们经常需要将整数转换为字符串。然而,直接使用string()函数进行转换可能会导致意想不到的结果。这是因为string()函数会将整数解释为Unicode字符的代码点,而不是将其转换为对应的数字字符串。

错误的转换方式

例如,如果我们尝试将整数65转换为字符串:

s := string(65) fmt.Println(s)  // 输出:A    

这里,string(65)并没有返回我们期望的"65",而是返回了"A"。这是因为65是大写字母A的Unicode代码点。

如果我们尝试将一个非法的Unicode代码点转换为字符串,例如string(0x110000),Go会返回一个包含Unicode替代字符(U+FFFD,对应于UTF-8编码的"\xEF\xBF\xBD")的字符串,因为0x110000超出了Unicode的有效范围(0x0到0x10FFFF)。

正确的转换方式

在Go中,将整数转换为字符串的正确方式是使用fmt.Sprintfstrconv.Itoa(对于整数)或strconv.FormatUint(对于无符号整数)。例如:

s := fmt.Sprintf("%d", 65) fmt.Println(s)  // 输出:65  

或者:

  s := strconv.Itoa(65) fmt.Println(s)  // 输出:65  

对于无符号整数,我们可以使用strconv.FormatUint

  s := strconv.FormatUint(65, 10) fmt.Println(s)  // 输出:65        

这些函数都会将整数转换为其十进制字符串表示。

结论

在Go中,我们应该避免使用string()函数将整数转换为字符串,因为它会将整数解释为Unicode字符的代码点。相反,我们应该使用fmt.Sprintfstrconv.Itoastrconv.FormatUint来进行转换,这些函数会将整数转换为其十进制字符串表示。

标签:转换,fmt,strconv,整数,字符串,65,Go
From: https://www.cnblogs.com/zhanchenjin/p/17976339

相关文章

  • GYM102596L Yosupo's Algorithm【分治,支配对】
    给定平面上\(2n\)个点,每个点有坐标\((x_i,y_i)\),权值\(w_i\)及颜色\(c_i\)。所有点满足:若\(c_i=0\),则\(x_i<0\);若\(c_i=1\),则\(x_i>0\)。\(q\)次查询,每次给定\(L_i,R_i\),你需要选择两个点\(i,j\)满足如下条件:\(c_i=0,c_j=1\)。\(x_i<L,x_j>R\)或\(x_......
  • 【踩了一个坑】为什么 golang struct 中的 slice 无法原子赋值
    作者:张富春(ahfuzhang),转载时请注明作者和引用链接,谢谢!cnblogs博客zhihuGithub公众号:一本正经的瞎扯有这样一个结构体:typeMyStstruct{Field[]byte}我在数组排序中想要交换值:funcSwap(arr[]MySt,i,jint){arr[i],arr[j]=arr[j],arr[i]}我猜......
  • .NET字符串内存管理:常量字符串、动态创建和字符串池的巧妙结合
     在.NET中,字符串是不可变的,这意味着一旦创建,字符串的内容就不能被修改。字符串在内存中以不同的方式存储,具体取决于它是常量字符串还是动态创建的字符串。常量字符串常量字符串在编译时就被解析,并在程序的元数据(Metadata)中存储。多个相同的字符串常量可能会共享同一块内存......
  • C# 字符串操作指南:长度、连接、插值、特殊字符和实用方法
    字符串用于存储文本。一个字符串变量包含由双引号括起的字符集合示例://创建一个string类型的变量并赋予一个值stringgreeting="Hello";如果需要,一个字符串变量可以包含多个单词:示例:stringgreeting2="Nicetomeetyou!";字符串长度在C#中,字符串实际上是一......
  • 每日一题 2024-1-20 按分隔符拆分字符串
    1.题目(1239)原题链接给你一个字符串数组\(words\)和一个字符\(separator\),请你按\(separator\)拆分\(words\)中的每个字符串。返回一个由拆分后的新字符串组成的字符串数组,不包括空字符串。注意\(separator\)用于决定拆分发生的位置,但它不包含在结果字符串中。拆分......
  • 快速录制UI测试脚本,RunnerGo新上脚本录制器
    想快速配置可视化UI自动化测试脚本?RunnerGo近期上线脚本录制器,根据你的测试操作直接生成UI自动化测试脚本,下面是使用方法Step1:下载录制器点击RunnerGo上方插件按钮下载录制器Step2:录制器使用将插件文件拖入浏览器扩展程序点击打开录制器,在浏览器中进行操作时录制器会将操作录制为......
  • 谷歌云 | 企业如何高效处理服务中断?Google Cloud 全面推出个性化服务状态监测
    当云服务发生故障时,理解原因和影响至关重要,这样您才能制定行动方案并作出有效响应。去年8月,谷歌云推出了个性化服务状态监测,提供有关谷歌云服务中断时快速、透明和可操作的沟通,帮助企业更有效地应对事件昨日,谷歌云宣布,包括计算引擎、云存储、所有云网络产品、BigQuery和GoogleK......
  • 快速录制UI测试脚本,RunnerGo新上脚本录制器
    想快速配置可视化UI自动化测试脚本?RunnerGo近期上线脚本录制器,根据你的测试操作直接生成UI自动化测试脚本,下面是使用方法Step1:下载录制器点击RunnerGo上方插件按钮下载录制器 Step2:录制器使用将插件文件拖入浏览器扩展程序 点击打开录制器,在浏览器中进行操作时录制器......
  • Go - Pad a number with zeros when printing
     funcmain(){counter:=0varstrstringfor_,i:=range[]byte("foobar"){letterBin:=fmt.Sprintf("%08b",i)fmt.Println(letterBin)str=str+letterBincounter=counter+len(lett......
  • 像 Google SRE 一样 OnCall
    在GoogleSRE的著作《Google运维解密》(原作名:SiteReliabilityEngineering:HowGoogleRunsProductionSystems)中,GoogleSRE的关键成员们几乎不惜用了三个章节的篇幅描述了在Google他们是如何OnCall的。GoogleSRE实践中,有一个广为人知的理念:减少琐事,用软件工程的方......