【GO】进制转换以及数位拆分工具类代码

所有入参传入数据都是string类型,这样更方便整体处理。
进制数枚举常量可以增加更多的进制类型,进制转换中可相应增加处理函数。

import (
	"errors"
	"strconv"
)

// BaseEnumType 进制数枚举常量
type BaseEnumType string
const (
	BASE_DEC BaseEnumType = "DEC"
	BASE_HEX BaseEnumType = "HEX"
)

// BaseTransAndSplit 进制转换并按数位拆分
func BaseTransAndSplit(dataStr string, oldBaseType BaseEnumType, newBaseType BaseEnumType, start int, end int) (string, error) {
	transData, err := BaseTransition(dataStr, oldBaseType, newBaseType)
	splitDataStr, err := DigitalSplit(transData, start, end)
	return splitDataStr, err
}

// BaseTransition 进制转换
func BaseTransition(dataStr string, oldBaseType BaseEnumType, newBaseType BaseEnumType) (string, error) {
	if oldBaseType == BASE_DEC {
		if newBaseType == BASE_HEX {
			transData, err := BaseDecToHex(dataStr)
			return transData, err
		}
	}
	if oldBaseType == BASE_HEX {
		if newBaseType == BASE_DEC {
			transData, err := BaseHexToDec(dataStr)
			return transData, err
		}
	}
	return dataStr, errors.New("conversion type does not exist")
}

// BaseDecToHex 10进制64位整形数字转换为16进制
func BaseDecToHex(dataStr string) (string, error) {
	base10, err := strconv.ParseInt(dataStr, 10, 64)
	transDataStr := strconv.FormatInt(base10, 16)
	return transDataStr, err
}

// BaseHexToDec 16进制数字转换为10进制64位整形
func BaseHexToDec(dataStr string) (string, error) {
	base10, err := strconv.ParseInt(dataStr, 16, 64)
	transDataStr := strconv.FormatInt(base10, 10)
	return transDataStr, err
}

// DigitalSplit 位数拆分,取start-end位数的数字,第一位从0开始,不包括end
func DigitalSplit(dataStr string, start int, end int) (string, error) {
	splitDataStr := dataStr[start:end]
	return splitDataStr, nil
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

随处可见的打字员

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值