前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Golang BCD码和string互转

Golang BCD码和string互转

作者头像
程序员小涛
发布2020-12-03 11:33:31
1.5K0
发布2020-12-03 11:33:31
举报
文章被收录于专栏:涛的程序人生

Golang BCD码和string互转

代码语言:javascript
复制
package main

import (
	"fmt"
	"strconv"
	"strings"
)

func main()  {
	TestBcd2Number()
}

func TestBcd2Number() {
	bcd := Hex2Byte("ffff1012")
	fmt.Printf("bcd: %x\n", bcd)
	number := Bcd2Number(bcd)
	fmt.Printf("bcd2number: %v\n", number)
	b := Number2bcd(number)
	fmt.Printf("number2bcd: %x\n", b)
}

func Bcd2Number(bcd []byte) string {
	var number string
	for _, i := range bcd {
		number += fmt.Sprintf("%02X", i)
	}
	pos := strings.LastIndex(number,"F")
	if pos == 8 {
		return "0"
	}
	return number[pos + 1:]
}

func Number2bcd(number string) []byte {
	var rNumber = number
	for i := 0; i < 8 - len(number); i++ {
		rNumber = "f" + rNumber
	}
	bcd := Hex2Byte(rNumber)
	return bcd
}

func Hex2Byte(str string) []byte {
	slen := len(str)
	bHex := make([]byte, len(str)/2)
	ii := 0
	for i := 0; i < len(str); i = i + 2 {
		if slen != 1 {
			ss := string(str[i]) + string(str[i+1])
			bt, _ := strconv.ParseInt(ss, 16, 32)
			bHex[ii] = byte(bt)
			ii = ii + 1
			slen = slen - 2
		}
	}
	return bHex
}
运行结果:
在这里插入图片描述
在这里插入图片描述
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020/09/29 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Golang BCD码和string互转
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档