“伤心蒸汽”为你分享10篇“Go语言对字符串进行SHA1哈希运算的方法”,经本站小编整理后发布,但愿对你的工作、学习、生活带来方便。
篇1:Go语言对字符串进行SHA1哈希运算的方法
作者:work24 字体:[增加 减小] 类型:
代码如下:
package main
import (
“fmt”
“crypto/md5”
“crypto/sha1”
“io”
)
//对字符串进行MD5哈希
func a(data string) string {
t := md5.New;
io.WriteString(t,data);
return fmt.Sprintf(“%x”,t.Sum(nil));
}
//对字符串进行SHA1哈希
func b(data string) string {
t := sha1.New();
io.WriteString(t,data);
return fmt.Sprintf(“%x”,t.Sum(nil));
}
func main(){
var data string = “abc”;
fmt.Printf(“MD5 : %sn”,a(data));
fmt.Printf(“SHA1 : %sn”,b(data));
}
输出结果如下:
代码如下:
D:workspacegolang>GetMd5AndSha1.exe
MD5 : 900150983cd24fb0d6963f7d28e17f72
SHA1 : a9993e364706816aba3e25717850c26c9cd0d89d
希望本文所述对大家的Go语言程序设计有所帮助,
篇2:Go语言对字符串进行MD5加密的方法
作者:work24 字体:[增加 减小] 类型:转载
这篇文章主要介绍了Go语言对字符串进行MD5加密的方法,实例分析了Go语言对字符串进行md5加密的技巧,需要的朋友可以参考下
本文实例讲述了Go语言对字符串进行MD5加密的方法,分享给大家供大家参考。具体实现方法如下:
代码如下:
package main
import (
“crypto/md5”
“fmt”
“io”
)
func main() {
h := md5.New()
io.WriteString(h, “welcome to jb51.net”)
fmt.Printf(“%x”, h.Sum(nil))
}
希望本文所述对大家的Go语言程序设计有所帮助,
篇3:Go语言对JSON进行编码和解码的方法
作者:不吃皮蛋 字体:[增加 减小] 类型:
json已成为不同平台间传送数据的最佳方式,Golang对json的支持非常好,代码如下:
代码如下:
package main
import (
“fmt”
“encoding/json”
)
func main {
// json encode
j1 := make(map[string]interface{})
j1[“name”] = “脚本之家”
j1[“url”] = “http://www.jb51.net/”
js1, err := json.Marshal(j1)
if err != nil {
panic(err)
}
println(string(js1))
// json decode
j2 := make(map[string]interface{})
err = json.Unmarshal(js1, &j2)
if err != nil {
panic(err)
}
fmt.Printf(“%#vn”, j2)
}
希望本文所述对大家的Go语言程序设计有所帮助,
篇4:go语言对文件按照指定块大小进行分割的方法
作者:work24 字体:[增加 减小] 类型:转载
这篇文章主要介绍了go语言对文件按照指定块大小进行分割的方法,实例分析了Go语言文件操作的技巧,需要的朋友可以参考下
本文实例讲述了go语言对文件按照指定块大小进行分割的方法,分享给大家供大家参考。具体如下:
代码如下:
import (
// “bufio”
“flag”
“fmt”
“io”
“os”
)
import “strconv”
var infile *string = flag.String(“f”, “Null”, “please input a file name or dir.”)
var size *string = flag.String(“s”, “0”, “please input a dst file size.”)
//func dataCopy(file *os.File, file *os.File)
func SplitFile(file *os.File, size int) {
finfo, err := file.Stat()
if err != nil {
fmt.Println(“get file info failed:”, file, size)
}
fmt.Println(finfo, size)
//每次最多拷贝1m
bufsize := 1024 * 1024
if size < bufsize {
bufsize = size
}
buf := make([]byte, bufsize)
num := (int(finfo.Size()) + size - 1) / size
fmt.Println(num, len(buf))
for i := 0; i < num; i++ {
copylen := 0
newfilename := finfo.Name() + strconv.Itoa(i)
newfile, err1 := os.Create(newfilename)
if err1 != nil {
fmt.Println(“failed to create file”, newfilename)
} else {
fmt.Println(“create file:”, newfilename)
}
for copylen < size {
n, err2 := file.Read(buf)
if err2 != nil && err2 != io.EOF {
fmt.Println(err2, “failed to read from:”, file)
break
}
if n <= 0 {
break
}
//fmt.Println(n, len(buf))
//写文件
w_buf := buf[:n]
newfile.Write(w_buf)
copylen += n
}
}
return
}
func main() {
flag.Parse()
if *infile == “Null” {
fmt.Println(“no file to input”)
return
}
file, err := os.Open(*infile)
if err != nil {
fmt.Println(“failed to open:”, *infile)
}
defer file.Close()
size, _ := strconv.Atoi(*size)
SplitFile(file, size*1024)
}
希望本文所述对大家的Go语言程序设计有所帮助,
篇5:Go语言常用字符串处理方法实例
作者:work24 字体:[增加 减小] 类型:
代码如下:
package main
import (
“fmt”
“strings”
//“unicode/utf8”
)
func main {
fmt.Println(“查找子串是否在指定的字符串中”)
fmt.Println(“ Contains 函数的用法”)
fmt.Println(strings.Contains(“seafood”, “foo”)) //true
fmt.Println(strings.Contains(“seafood”, “bar”)) //false
fmt.Println(strings.Contains(“seafood”, “”)) //true
fmt.Println(strings.Contains(“”, “”)) //true 这里要特别注意
fmt.Println(strings.Contains(“我是中国人”, “我”)) //true
fmt.Println(“”)
fmt.Println(“ ContainsAny 函数的用法”)
fmt.Println(strings.ContainsAny(“team”, “i”)) // false
fmt.Println(strings.ContainsAny(“failure”, “u & i”)) // true
fmt.Println(strings.ContainsAny(“foo”, “”)) // false
fmt.Println(strings.ContainsAny(“”, “”)) // false
fmt.Println(“”)
fmt.Println(“ ContainsRune 函数的用法”)
fmt.Println(strings.ContainsRune(“我是中国”, ‘我‘)) // true 注意第二个参数,用的是字符
fmt.Println(“”)
fmt.Println(“ Count 函数的用法”)
fmt.Println(strings.Count(“cheese”, “e”)) // 3
fmt.Println(strings.Count(“five”, “”)) // before & after each rune result: 5 , 源码中有实现
fmt.Println(“”)
fmt.Println(“ EqualFold 函数的用法”)
fmt.Println(strings.EqualFold(“Go”, “go”)) //大小写忽略
fmt.Println(“”)
fmt.Println(“ Fields 函数的用法”)
fmt.Println(“Fields are: %q”, strings.Fields(“ foo bar baz ”)) //[“foo” “bar” “baz”] 返回一个列表
//相当于用函数做为参数,支持匿名函数
for _, record := range []string{“ aaa*1892*122”, “aaataat”, “124|939|22”} {
fmt.Println(strings.FieldsFunc(record, func(ch rune) bool {
switch {
case ch > ‘5‘:
return true
}
return false
}))
}
fmt.Println(“”)
fmt.Println(“ HasPrefix 函数的用法”)
fmt.Println(strings.HasPrefix(“NLT_abc”, “NLT”)) //前缀是以NLT开头的
fmt.Println(“”)
fmt.Println(“ HasSuffix 函数的用法”)
fmt.Println(strings.HasSuffix(“NLT_abc”, “abc”)) //后缀是以NLT开头的
fmt.Println(“”)
fmt.Println(“ Index 函数的用法”)
fmt.Println(strings.Index(“NLT_abc”, “abc”)) // 返回第一个匹配字符的位置,这里是4
fmt.Println(strings.Index(“NLT_abc”, “aaa”)) // 在存在返回 -1
fmt.Println(strings.Index(“我是中国人”, “中”)) // 在存在返回 6
fmt.Println(“”)
fmt.Println(“ IndexAny 函数的用法”)
fmt.Println(strings.IndexAny(“我是中国人”, “中”)) // 在存在返回 6
fmt.Println(strings.IndexAny(“我是中国人”, “和”)) // 在存在返回 -1
fmt.Println(“”)
fmt.Println(“ Index 函数的用法”)
fmt.Println(strings.IndexRune(“NLT_abc”, ‘b‘)) // 返回第一个匹配字符的位置,这里是4
fmt.Println(strings.IndexRune(“NLT_abc”, ‘s‘)) // 在存在返回 -1
fmt.Println(strings.IndexRune(“我是中国人”, ‘中‘)) // 在存在返回 6
fmt.Println(“”)
fmt.Println(“ Join 函数的用法”)
s := []string{“foo”, “bar”, “baz”}
fmt.Println(strings.Join(s, “, ”)) // 返回字符串:foo, bar, baz
fmt.Println(“”)
fmt.Println(“ LastIndex 函数的用法”)
fmt.Println(strings.LastIndex(“go gopher”, “go”)) // 3
fmt.Println(“”)
fmt.Println(“ LastIndexAny 函数的用法”)
fmt.Println(strings.LastIndexAny(“go gopher”, “go”)) // 4
fmt.Println(strings.LastIndexAny(“我是中国人”, “中”)) // 6
fmt.Println(“”)
fmt.Println(“ Map 函数的用法”)
rot13 := func(r rune) rune {
switch {
case r >= ‘A‘ && r <= ‘Z‘:
return ‘A‘ + (r-‘A‘+13)%26
case r >= ‘a‘ && r <= ‘z‘:
return ‘a‘ + (r-‘a‘+13)%26
}
return r
}
fmt.Println(strings.Map(rot13, “‘Twas brillig and the slithy gopher...”))
fmt.Println(“”)
fmt.Println(“ Repeat 函数的用法”)
fmt.Println(“ba” + strings.Repeat(“na”, 2)) //banana
fmt.Println(“”)
fmt.Println(“ Replace 函数的用法”)
fmt.Println(strings.Replace(“oink oink oink”, “k”, “ky”, 2))
fmt.Println(strings.Replace(“oink oink oink”, “oink”, “moo”, -1))
fmt.Println(“”)
fmt.Println(“ Split 函数的用法”)
fmt.Printf(“%qn”, strings.Split(“a,b,c”, “,”))
fmt.Printf(“%qn”, strings.Split(“a man a plan a canal panama”, “a ”))
fmt.Printf(“%qn”, strings.Split(“ xyz ”, “”))
fmt.Printf(“%qn”, strings.Split(“”, “Bernardo O‘Higgins”))
fmt.Println(“”)
fmt.Println(“ SplitAfter 函数的用法”)
fmt.Printf(“%qn”, strings.SplitAfter(“/home/m_ta/src”, “/”)) //[“/” “home/” “m_ta/” “src”]
fmt.Println(“”)
fmt.Println(“ SplitAfterN 函数的用法”)
fmt.Printf(“%qn”, strings.SplitAfterN(“/home/m_ta/src”, “/”, 2)) //[“/” “home/m_ta/src”]
fmt.Printf(“%qn”, strings.SplitAfterN(“#home#m_ta#src”, “#”, -1)) //[“/” “home/” “m_ta/” “src”]
fmt.Println(“”)
fmt.Println(“ SplitN 函数的用法”)
fmt.Printf(“%qn”, strings.SplitN(“/home/m_ta/src”, “/”, 1))
fmt.Printf(“%qn”, strings.SplitN(“/home/m_ta/src”, “/”, 2)) //[“/” “home/” “m_ta/” “src”]
fmt.Printf(“%qn”, strings.SplitN(“/home/m_ta/src”, “/”, -1)) //[“” “home” “m_ta” “src”]
fmt.Printf(“%qn”, strings.SplitN(“home,m_ta,src”, “,”, 2)) //[“/” “home/” “m_ta/” “src”]
fmt.Printf(“%qn”, strings.SplitN(“#home#m_ta#src”, “#”, -1)) //[“/” “home/” “m_ta/” “src”]
fmt.Println(“”)
fmt.Println(“ Title 函数的用法”) //这个函数,还真不知道有什么用
fmt.Println(strings.Title(“her royal highness”))
fmt.Println(“”)
fmt.Println(“ ToLower 函数的用法”)
fmt.Println(strings.ToLower(“Gopher”)) //gopher
fmt.Println(“”)
fmt.Println(“ ToLowerSpecial 函数的用法”)
fmt.Println(“”)
fmt.Println(“ ToTitle 函数的用法”)
fmt.Println(strings.ToTitle(“loud noises”))
fmt.Println(strings.ToTitle(“loud 中国”))
fmt.Println(“”)
fmt.Println(“ Replace 函数的用法”)
fmt.Println(strings.Replace(“ABAACEDF”, “A”, “a”, 2)) // aBaACEDF
//第四个参数小于0,表示所有的都替换, 可以看下golang的文档
fmt.Println(strings.Replace(“ABAACEDF”, “A”, “a”, -1)) // aBaaCEDF
fmt.Println(“”)
fmt.Println(“ ToUpper 函数的用法”)
fmt.Println(strings.ToUpper(“Gopher”)) //GOPHER
fmt.Println(“”)
fmt.Println(“ Trim 函数的用法”)
fmt.Printf(“[%q]”, strings.Trim(“ !!! Achtung !!! ”, “! ”)) // [“Achtung”]
fmt.Println(“”)
fmt.Println(“ TrimLeft 函数的用法”)
fmt.Printf(“[%q]”, strings.TrimLeft(“ !!! Achtung !!! ”, “! ”)) // [“Achtung !!! ”]
fmt.Println(“”)
fmt.Println(“ TrimSpace 函数的用法”)
fmt.Println(strings.TrimSpace(“ tn a lone gopher ntrn”)) // a lone gopher
}
希望本文所述对大家的Go语言程序设计有所帮助,
篇6:Go语言按字节截取字符串的方法
作者:不吃皮蛋 字体:[增加 减小] 类型:转载
这篇文章主要介绍了Go语言按字节截取字符串的方法,涉及Go语言操作字符串的技巧,非常具有实用价值,需要的朋友可以参考下
本文实例讲述了Go语言按字节截取字符串的方法,分享给大家供大家参考。具体实现方法如下:
代码如下:
// 按字节截取字符串 utf-8不乱码
func SubstrByByte(str string, length int) string {
bs := []byte(str)[:length]
bl := 0
for i:=len(bs)-1; i>=0; i-- {
switch {
case bs[i] >= 0 && bs[i] <= 127:
return string(bs[:i+1])
case bs[i] >= 128 && bs[i] <= 191:
bl++;
case bs[i] >= 192 && bs[i] <= 253:
cl := 0
switch {
case bs[i] & 252 == 252:
cl = 6
case bs[i] & 248 == 248:
cl = 5
case bs[i] & 240 == 240:
cl = 4
case bs[i] & 224 == 224:
cl = 3
default:
cl = 2
}
if bl+1 == cl {
return string(bs[:i+cl])
}
return string(bs[:i])
}
}
return “”
}
希望本文所述对大家的Go语言程序设计有所帮助,
篇7:go语言按显示长度截取字符串的方法
作者:不吃皮蛋 字体:[增加 减小] 类型:
根据显示长度截取字符串,之前php用的utf8编码,10个英文和10个汉字的显示长度差距太大,按字节截取的话又会出错出现截取半个汉字的情况,所以写了这两个函数.
这两天在折腾golang,所以就用golang重写了着连个函数.代码如下:
代码如下:
package main
import (
“fmt”
)
func main {
fmt.Println(show_strlen(“哈哈1”))
fmt.Println(show_substr(“哈哈1什1么的”, 9))
}
根绝显示长度截取字符串
代码如下:
func show_substr(s string, l int) string {
if len(s) <= l {
return s
}
ss, sl, rl, rs := “”, 0, 0, []rune(s)
for _, r := range rs {
rint := int(r)
if rint < 128 {
rl = 1
} else {
rl = 2
}
if sl + rl > l {
break
}
sl += rl
ss += string(r)
}
return ss
}
根据字符串显示获取显示长度
代码如下:
func show_strlen(s string) int {
sl := 0
rs := []rune(s)
for _, r := range rs {
rint := int(r)
if rint < 128 {
sl++
} else {
sl += 2
}
}
return sl
}
希望本文所述对大家的Go语言程序设计有所帮助,
篇8:go语言实现字符串base64编码的方法
作者:令狐不聪 字体:[增加 减小] 类型:转载
这篇文章主要介绍了go语言实现字符串base64编码的方法,实例分析了Go语言操作字符串的技巧及base64编码的使用技巧,需要的朋友可以参考下
本文实例讲述了go语言实现字符串base64编码的方法,分享给大家供大家参考。具体实现方法如下:
代码如下:
package main
import (
“fmt”
“encoding/base64”
)
func main() {
var b bytes.Buffer
w := base64.NewEncoder(base64.URLEncoding, &b)
w.Write(data)
w.Close()
data := b.Bytes()
}
希望本文所述对大家的Go语言程序设计有所帮助,
篇9:python按照多个字符对字符串进行分割的方法
作者:八大山人 字体:[增加 减小] 类型:
这篇文章主要介绍了python按照多个字符对字符串进行分割的方法,涉及Python中正则表达式匹配的技巧,非常具有实用价值,需要的朋友可以参考下
本文实例讲述了python按照多个字符对字符串进行分割的方法,分享给大家供大家参考。具体分析如下:
这段python代码通过这规则表达式对字符串进行分割,使用w作为分割符,只要不是字母和数字的就会被分割开来,
import reDATA = “Hey, you - what are you doing here! welcome to jb51?”print re.findall(r“[w‘]+”, DATA)
输出结果如下
代码如下:
[‘Hey‘, ‘you‘, ‘what‘, ‘are‘, ‘you‘, ‘doing‘, ‘here‘, ‘welcome‘, ‘to‘, ‘jb51‘
]
希望本文所述对大家的Python程序设计有所帮助。
篇10:Go语言使用sort包对任意类型元素的集合进行排序的方法
作者:books1958 字体:[增加 减小] 类型:转载
这篇文章主要介绍了Go语言使用sort包对任意类型元素的集合进行排序的方法,实例分析了sort排序所涉及的方法与相关的使用技巧,需要的朋友可以参考下
本文实例讲述了Go语言使用sort包对任意类型元素的集合进行排序的方法,分享给大家供大家参考。具体如下:
使用sort包的函数进行排序时,集合需要实现sort.Inteface接口,该接口中有三个方法:
代码如下:
// Len is the number of elements in the collection.
Len() int
// Less reports whether the element with
// index i should sort before the element with index j.
Less(i, j int) bool
// Swap swaps the elements with indexes i and j.
Swap(i, j int)
以下为简单示例:
代码如下:
//对任意对象进行排序
type Person struct {
name string
age int
}
//为*Person添加String()方法,便于输出
func (p *Person) String() string {
return fmt.Sprintf(“( %s,%d )”, p.name, p.age)
}
type PersonList []*Person
//排序规则:首先按年龄排序(由小到大),年龄相同时按姓名进行排序(按字符串的自然顺序)
func (list PersonList) Len() int {
return len(list)
}
func (list PersonList) Less(i, j int) bool {
if list[i].age < list[j].age {
return true
} else if list[i].age > list[j].age {
return false
} else {
return list[i].name < list[j].name
}
}
func (list PersonList) Swap(i, j int) {
var temp *Person = list[i]
list[i] = list[j]
list[j] = temp
}
func interfaceTest0203() {
fmt.Println(“------”)
p1 := &Person{“Tom”, 19}
p2 := &Person{“Hanks”, 19}
p3 := &Person{“Amy”, 19}
p4 := &Person{“Tom”, 20}
p5 := &Person{“Jogn”, 21}
p6 := &Person{“Mike”, 23}
pList := PersonList([]*Person{p1, p2, p3, p4, p5, p6})
sort.Sort(pList)
fmt.Println(pList)
/*output:
[( Amy,19 ) ( Hanks,19 ) ( Tom,19 ) ( Tom,20 ) ( Jogn,21 ) ( Mike,23 )] */
}
希望本文所述对大家的Go语言程序设计有所帮助,
★ java教学总结
★ java个人总结
★ 电子数字签名
★ 数字签名
★ 如何通过 SQL Server 使用 Forms 身份验证安全设置
【Go语言对字符串进行SHA1哈希运算的方法(共10篇)】相关文章:
SYBASE在ALPHA工作站上的安装(原)Windows系统2022-04-30
java学习总结2023-12-10
浅析基于可验证计算的可信云计算优秀论文2023-03-02
java年终总结2023-11-08
全国计算机基础真题及答案解答2023-12-29
华为财经笔试经验2023-03-20
百度PHP/JSP职位在线笔试真题详解2022-06-17
脚本 范文2024-03-06
百度笔试题2023-06-01
广告脚本范文2023-07-17