好湿?好紧?好多水好爽自慰,久久久噜久噜久久综合,成人做爰A片免费看黄冈,机机对机机30分钟无遮挡

主頁 > 知識庫 > golang 將[]byte轉成16進制的實現

golang 將[]byte轉成16進制的實現

熱門標簽:400開頭電話怎樣申請 地圖區域圖標注后導出 赤峰電銷 谷歌美發店地圖標注 江蘇呼叫中心外呼系統有效果嗎 利用地圖標注位置 杭州人工智能電銷機器人費用 貴州電話智能外呼系統 官渡電銷外呼管理系統怎么收費

將[]byte轉成16進制

import "crypto/md5"
import "fmt"
sign := md5.Sum([]byte("date string"))
signStr := fmt.Sprintf("%x", sign) //將[]byte轉成16進制

補充:golang []byte存儲存儲的16進制轉10進制

項目中有用[]byte存儲16進制需要轉到10進制,如果用系統自帶的函數處理,需要先將[]byte通過hex.EncodeToString轉為string,再用strconv.ParseInt轉到10進制,過程中由于兩次轉換導致內存分配過多(每秒執行近100w次),GC出現錯誤導致進程掛掉。

自己寫了一個函數來轉,主要是避免出現內存泄漏:

var b2m_map map[byte]uint64 = map[byte]uint64{
	0x00: 0,
	0x01: 1,
	0x02: 2,
	0x03: 3,
	0x04: 4,
	0x05: 5,
	0x06: 6,
	0x07: 7,
	0x08: 8,
	0x09: 9,
	0x0A: 10,
	0x0B: 11,
	0x0C: 12,
	0x0D: 13,
	0x0E: 14,
	0x0F: 15,
	0x10: 16,
	0x11: 17,
	0x12: 18,
	0x13: 19,
	0x14: 20,
	0x15: 21,
	0x16: 22,
	0x17: 23,
	0x18: 24,
	0x19: 25,
	0x1A: 26,
	0x1B: 27,
	0x1C: 28,
	0x1D: 29,
	0x1E: 30,
	0x1F: 31,
	0x20: 32,
	0x21: 33,
	0x22: 34,
	0x23: 35,
	0x24: 36,
	0x25: 37,
	0x26: 38,
	0x27: 39,
	0x28: 40,
	0x29: 41,
	0x2A: 42,
	0x2B: 43,
	0x2C: 44,
	0x2D: 45,
	0x2E: 46,
	0x2F: 47,
	0x30: 48,
	0x31: 49,
	0x32: 50,
	0x33: 51,
	0x34: 52,
	0x35: 53,
	0x36: 54,
	0x37: 55,
	0x38: 56,
	0x39: 57,
	0x3A: 58,
	0x3B: 59,
	0x3C: 60,
	0x3D: 61,
	0x3E: 62,
	0x3F: 63,
	0x40: 64,
	0x41: 65,
	0x42: 66,
	0x43: 67,
	0x44: 68,
	0x45: 69,
	0x46: 70,
	0x47: 71,
	0x48: 72,
	0x49: 73,
	0x4A: 74,
	0x4B: 75,
	0x4C: 76,
	0x4D: 77,
	0x4E: 78,
	0x4F: 79,
	0x50: 80,
	0x51: 81,
	0x52: 82,
	0x53: 83,
	0x54: 84,
	0x55: 85,
	0x56: 86,
	0x57: 87,
	0x58: 88,
	0x59: 89,
	0x5A: 90,
	0x5B: 91,
	0x5C: 92,
	0x5D: 93,
	0x5E: 94,
	0x5F: 95,
	0x60: 96,
	0x61: 97,
	0x62: 98,
	0x63: 99,
	0x64: 100,
	0x65: 101,
	0x66: 102,
	0x67: 103,
	0x68: 104,
	0x69: 105,
	0x6A: 106,
	0x6B: 107,
	0x6C: 108,
	0x6D: 109,
	0x6E: 110,
	0x6F: 111,
	0x70: 112,
	0x71: 113,
	0x72: 114,
	0x73: 115,
	0x74: 116,
	0x75: 117,
	0x76: 118,
	0x77: 119,
	0x78: 120,
	0x79: 121,
	0x7A: 122,
	0x7B: 123,
	0x7C: 124,
	0x7D: 125,
	0x7E: 126,
	0x7F: 127,
	0x80: 128,
	0x81: 129,
	0x82: 130,
	0x83: 131,
	0x84: 132,
	0x85: 133,
	0x86: 134,
	0x87: 135,
	0x88: 136,
	0x89: 137,
	0x8A: 138,
	0x8B: 139,
	0x8C: 140,
	0x8D: 141,
	0x8E: 142,
	0x8F: 143,
	0x90: 144,
	0x91: 145,
	0x92: 146,
	0x93: 147,
	0x94: 148,
	0x95: 149,
	0x96: 150,
	0x97: 151,
	0x98: 152,
	0x99: 153,
	0x9A: 154,
	0x9B: 155,
	0x9C: 156,
	0x9D: 157,
	0x9E: 158,
	0x9F: 159,
	0xA0: 160,
	0xA1: 161,
	0xA2: 162,
	0xA3: 163,
	0xA4: 164,
	0xA5: 165,
	0xA6: 166,
	0xA7: 167,
	0xA8: 168,
	0xA9: 169,
	0xAA: 170,
	0xAB: 171,
	0xAC: 172,
	0xAD: 173,
	0xAE: 174,
	0xAF: 175,
	0xB0: 176,
	0xB1: 177,
	0xB2: 178,
	0xB3: 179,
	0xB4: 180,
	0xB5: 181,
	0xB6: 182,
	0xB7: 183,
	0xB8: 184,
	0xB9: 185,
	0xBA: 186,
	0xBB: 187,
	0xBC: 188,
	0xBD: 189,
	0xBE: 190,
	0xBF: 191,
	0xC0: 192,
	0xC1: 193,
	0xC2: 194,
	0xC3: 195,
	0xC4: 196,
	0xC5: 197,
	0xC6: 198,
	0xC7: 199,
	0xC8: 200,
	0xC9: 201,
	0xCA: 202,
	0xCB: 203,
	0xCC: 204,
	0xCD: 205,
	0xCE: 206,
	0xCF: 207,
	0xD0: 208,
	0xD1: 209,
	0xD2: 210,
	0xD3: 211,
	0xD4: 212,
	0xD5: 213,
	0xD6: 214,
	0xD7: 215,
	0xD8: 216,
	0xD9: 217,
	0xDA: 218,
	0xDB: 219,
	0xDC: 220,
	0xDD: 221,
	0xDE: 222,
	0xDF: 223,
	0xE0: 224,
	0xE1: 225,
	0xE2: 226,
	0xE3: 227,
	0xE4: 228,
	0xE5: 229,
	0xE6: 230,
	0xE7: 231,
	0xE8: 232,
	0xE9: 233,
	0xEA: 234,
	0xEB: 235,
	0xEC: 236,
	0xED: 237,
	0xEE: 238,
	0xEF: 239,
	0xF0: 240,
	0xF1: 241,
	0xF2: 242,
	0xF3: 243,
	0xF4: 244,
	0xF5: 245,
	0xF6: 246,
	0xF7: 247,
	0xF8: 248,
	0xF9: 249,
	0xFA: 250,
	0xFB: 251,
	0xFC: 252,
	0xFD: 253,
	0xFE: 254,
	0xFF: 255,
}
func hex2int(hexB *[]byte) uint64 {
	var retInt uint64
	hexLen := len(*hexB)
	for k, v := range *hexB {
		retInt += b2m_map[v] * exponent(16, uint64(2*(hexLen-k-1)))
	}
	return retInt
}
func exponent(a, n uint64) uint64 {
	result := uint64(1)
	for i := n; i > 0; i >>= 1 {
		if i1 != 0 {
			result *= a
		}
		a *= a
	}
	return result
}

經過測試,性能和自帶的方法接近,略有提升。

goos: windows
goarch: amd64
pkg: benchmark
Benchmark_General-4  	10000000	    144 ns/op
Benchmark_Better-4  	10000000	    128 ns/op
PASS
ok 	benchmark	3.086s

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。如有錯誤或未考慮完全的地方,望不吝賜教。

您可能感興趣的文章:
  • golang中struct和[]byte的相互轉換示例
  • Golang二進制文件混淆保護操作
  • 減少 golang 二進制文件大小操作
  • 淺談golang二進制bit位的常用操作
  • Golang如何交叉編譯各個平臺的二進制文件詳解
  • Golang如何實現任意進制轉換的方法示例

標簽:鷹潭 河池 武漢 黔西 松原 保定 泰安 宜春

巨人網絡通訊聲明:本文標題《golang 將[]byte轉成16進制的實現》,本文關鍵詞  golang,將,byte,轉成,進制,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《golang 將[]byte轉成16進制的實現》相關的同類信息!
  • 本頁收集關于golang 將[]byte轉成16進制的實現的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 精品人妻一区二区三区潮喷在线| 午夜性片| 亚洲丁香婷婷综合久久六月| 女s调教m男免费网站| 粉嫩小泬啪啪流水高潮爽爽作文| 精品九九人人做人人爱| 亚洲一区二区无码精品色偷拍| 国产精品无人区一码二码三蘑菇| 人妻av无码专区久久绿巨人| 日韩欧美中文字幕出| 欧美一级Av无码毛片久久精品| 男人挤美女的尿动态图| 延边| 亚洲欧洲日产国产网站| 宁中则含精肉臀迎合| 备前宰相| 8?8?海外华人免费一区| 亚洲精品电影网| 91精品国产综合久久香蕉ktv| 欧美younv极品free| 丝袜另类卡通动漫校园激情| ?国产精品海角社区在线观看 | 任你躁精品免费视频| 一区二区在线免费视频| 国产japan色系videos护士| 新婚娇妻乳荡欲伦交换做爰| 被黑人c到高潮婬荡呻吟动态图| 啊灬嗯灬别揉我的奶了啊灬| 美女被桶秘?免费网站| JAVAPARSER丰满白老师| 成年美女毛片黄网站色**大全| 午夜精品理论片免费观看女友| 理论片大全免费理伦片| gay啪啪| 新久草| 狠狠操2018| 主人的任务(调教、1v1)男男| 99久久99热这里只有精品| 亚洲国产成人精品小蝌蚪| 无码人妻精品一区二区蜜桃视频| 95免费视频在线观看|