Go——字符串与整形互转问题

理论是灰色的,但实践之树长青🌲

概要

最近用go实现RUDP的过程中遇到服务端和客户端数据传输问题,涉及到字符串和整形数字互转的问题,遇到的坑在这里总结记录一下,共同学习!

代码

为了在服务端向客户端回传整形数字,这里采用先将数字转换为字符串,然后通过字节数组回传,但是在解析过程中debug发现解析错误,如图所示:

服务端代码

在这里插入图片描述

客户端代码

在这里插入图片描述
问题在于string的强转是不对的,string(int)这种强转会导致乱码问题,所以之后我采用strconv.Itoa(int)的方式转换,解决了该问题!

服务端转化代码:

//反馈数据,以字符串形式反馈
	feedbackStr := ""
	start := 1
	for index := range receData {
		if start == 1 {
			feedbackStr = strconv.Itoa(index)  //itoa的转换方式
		}else {
			feedbackStr = "," + strconv.Itoa(index)
		}
		start++
	}

客户端解析代码:

//对反馈接收到的包从sendData清理,如果超时,发送需要重新传送的剩余数据
		for _ , v := range packageNoBuf {
			fmt.Println("发送成功数据包序列号:", v)
			int, err := strconv.Atoi(v)  //这次解析没有错误了
			if err != nil {
				fmt.Println("数据转换错误,<", err, ">")
				return
			}
		}

总结

在字符串和整形数字转换的场景中不要使用强制转换,为了避免数据传输解析过程中的错误,推荐使用"strconv"包下的strconv.Atoi(string)和strconv.Itoa(int)两个方法!

个人使用Go实现的RUDP:https://github.com/SpecialAll/RUDP
欢迎大家一起交流学习!

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值