HZK16 Go语言读取以及显示研究
gb2312 区位码定位公式 offset:=(94*(区号-0x0a-1)+(位号-0x0a-1))*32
package main
import (
"fmt"
"os"
"github.com/gogf/gf/v2/encoding/gcharset"
)
func main() {
//utf-8转GBK2312
str, err := gcharset.UTF8To("GBK", "我们")
if err != nil {
panic(err)
}
bytes := []byte(str)
a:=int(bytes[2]-0xa0)-1 //取们的区号
b:=int(bytes[3]-0xa0)-1 //取们的位号
fmt.Println(a,b)
wz:=int64((94*a+b)*32) //偏移量
fmt.Printf("%d",wz)
file, err := os.Open("HZK16") //打开获取文件句柄
if err != nil {
fmt.Println(err)
return
}
defer file.Close()
file.Seek(wz,0) //从文件开始偏移多少
data := make([]byte, 32) //创建一个切片,大小32字节
file.Read(data)//读偏移位置开始后的32个字节
fmt.Println(" ")
for k,v:=range data {
i:=0
for i<8{
if (v&(0x80>>i))>0 {
fmt.Print("●")
}else{fmt.Print(" ")}
i++
}
if k%2!=0{
fmt.Println(" ")
}
}
}
本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。