<强>补充:golang[]字节存储存储的16进制转10进制
项目中有用[]字节存储16进制需要转到10进制,如果用系统自带的函数处理,需要先将[]字节通过hex.EncodeToString转为字符串,再用strconv。方法用于转到10进制,过程中由于两次转换导致内存分配过多(每秒执行近100 w次),GC出现错误导致进程挂掉。
自己写了一个函数来转,主要是避免出现内存泄漏:
var b2m_map 地图(字节)uint64 =,地图(字节)uint64 {
0 x00: 0,
0 x01: 1,
0 x02: 2
0 x03: 3,
0 x04: 4
5 0 x05:,,
0 x06: 6,
0 x07: 7,
(:,,
0 x09: 9,
10 0 x0a:,,
0 x0b:, 11日
0 x0c: 12,
0 x0d:, 13日
0 x0e:, 14日
0 x0f: 15日
0 x10:, 16日
0 x11:, 17日
0 x12:, 18日
0 * 13:,19日
0 x14:, 20日
0 x15:, 21日
0 x16:, 22日
0 x17:, 23岁,
0 x18:, 24岁,
0 x19: 25日
0 x1a: 26日,
0 x1b:, 27日
0 x1c:, 28日
0 x1d:, 29岁,
30 0 x1e:,,
0 x1f:, 31日
0 x20: 32岁
0 x21:, 33岁
0将:,34岁
0 x23:, 35岁,
0 x24:, 36岁,
0 25:,37岁,
0 x26: 38岁
0 x27:, 39岁,
40 0 x28:,,
0 x29:, 41岁
0 x2a:, 42岁,
0 x2b:, 43岁
0 x2c:, 44岁
0 x2d:, 45岁,
:表示就是0 x2e, 46岁,
0 x2f:, 47岁,
0 x30:, 48岁的
0 x31: 49岁
50 0 x32:,,
0 x33:, 51岁,
0 x34:, 52岁,
0 x35:, 53岁
0 x36:, 54岁
0 x37:, 55岁,
0 x38:, 56岁,
0 x39:, 57岁
0 x3a: 58岁
0 x3b:, 59岁
60 0 x3c:,,
61年0 x3d:,,
62年0 x3e:,,
63年0 x3f:,,
0 x40: 64年,,
0 x41: 65年,,
66年0×:,,
67年0 x43:,,
68年0 x44:,,
69年0 x45:,,
70年0 x46:,,
0开发:x47, 71年,
72年0 x48:,,
73年0 x49:,,
74年0 x4a:,,
75年0 x4b:,,
76年0 x4c:,,
77年0 x4d:,,
78年0 x4e:,,
79年0 x4f:,,
80年0×50:,,
0 x51: 81年,,
82年0 x52:,,
83年0 x53:,,
84年0 x54:,,
85年0 x55:,,
86年0 x56:,,
87年0 x57:,,
88年0 x58:,,
89年0 x59:,,
90年0 x5a:,,
91年0 x5b:,,
92年0 x5c:,,
93年0 x5d:,,
94年0 x5e:,,
95年0 x5f:,,
96年0 x60:,,
97年0 x61:,,
98年0 x62:,,
99年0 x63:,,
100年0 x64:,,
101年0 x65:,,
102年0 x66:,,
103年0 x67:,,
104年0 x68:,,
105年0 x69:,,
106年0 x6a:,,
107年0 x6b:,,
108年0 x6c:,,
109年0 x6d:,,
110年0 x6e:,,
111年0 x6f:,,
112年0 x70:,,
113年0 x71:,,
114年0 x72:,,
115年0 x73:,,
116年0 x74:,,
117年0 x75:,,
118年0 x76:,,
119年0 x77:,,
120年0 x78:,,
121年0 x79:,,
122年0 x7a:,,
123年0 x7b:,,
124年0 x7c:,,
125年0 x7d:,,
126年0 x7e:,,
0 x7f: 127年,,
0 x80: 128年,,
129年0 x81:,,
130年0 x82:,,
131年0 x83:,,
132年0 x84:,,
0 x85: 133年,,
134年0 x86:,,
135年0 x87:,,
136年0 x88:,,
137年0 x89:,,
138年0 x8a:,,
139年0 x8b:,,
140年0 x8c:,,
141年0 x8d:,,
0 x8e: 142年,,
143年0 x8f:,,
144年0 x90:,,
145年0 x91:,,
146年0 x92:,,
147年0 x93:,,
148年0 x94:,,
149年0 x95:,,
0 x96: 150年,,
151年0 x97:,,
152年0 x98:,,
153年0 x99:,,
154年0 x9a:,,
155年0 x9b:,,
156年0 x9c:,,
157年0 x9d:,,
158年0 x9e:,,
159年0 x9f:,,
160年0 xa0:,,
161年0 xa1:,,
162年0 xa2:,,
163年0 xa3:,,
164年0 xa4:,,
165年0 xa5:,,
166年0 xa6:,,
167年0 xa7:,,
168年0 xa8:,,
169年0 xa9:,,
170年0 xaa:,,
171年0 xab:,,
172年0 xac:,,
173年0 xad:,,
174年0机加区:,,
175年0 xaf:,,
176年0 xb0:,,
177年0 xb1:,,
178年0 xb2:,,
179年0 xb3:,,
180年0 xb4:,,
181年0 xb5:,,
182年0 xb6:,,
183年0 xb7:,,
184年0 xb8:,,
185年0 xb9:,,
186年0 xba:,,
187年0 xbb:,,
188年0 xbc:,,
189年0 xbd:,,
190年0 xbe:,,
191年0 xbf:,,
192年0 xc0:,,
193年0 xc1之前:,,
194年0 xc2:,,
195年0 xc3:,,
196年0 xc4:,,
197年0 xc5:,,
0 . xc6: 198年,,
199年0 xc7:,,
200年0 xc8:,,
201年0 xc9:,,
202年0 xca:,,
203年0 xcb:,,
0 xcc: 204年,,
205年0 xcd:,,
206年0 xce:,,
207年0 xcf:,,
208年0 xd0:,,
209年0 xd1:,,
210年0 xd2:,,
211年0 xd3:,,
212年0 xd4:,,
213年0 xd5:,,
214年0 xd6:,,
215年0 xd7:,,
216年0 xd8:,,
217年0 xd9:,,
218年0 xda:,,
0 xdb: 219年,,
220年0 xdc:,,
221年0 xdd:,,
222年0 xde:,,
223年0 xdf:,,
224年0 xe0:,,
225年0 xe1:,,
226年0 xe2:,,
227年0 xe3:,,
228年0 xe4:,,
229年0 xe5:,,
230年0 xe6:,,
231年0 xe7:,,
232年0 xe8:,,
233年0 xe9:,,
0 xea: 234年,,
235年0 xeb:,,
236年0 xec:,,
0中:237年,,
0 xee: 238年,,
239年0 xef:,,
240年0 xf0:,,
241年0 xf1:,,
242年0 xf2:,,
243年0 xf3:,,
244年0 xf4:,,
245年0 xf5:,,
246年0 xf6:,,
247年0 xf7:,,
248年0 xf8:,,
249年0 xf9:,,
250年0 xfa:,,
251年0 xfb:,,
252年0 xfc:,,
253年0 xfd:,,
以0 xfe: 254年,,
0 xff: 255年,,
}
func hex2int (hexB *[]字节),uint64 {
var retInt uint64
hexLen :=, len (* hexB)
for k, v :=, range * hexB {
+=retInt b2m_map [v], *,指数(16日,uint64 (2 * (hexLen-k-1)))
}
return retInt
}
func 指数(a, n uint64), uint64 {
result :=, uint64 (1)
for 小姐::=,n;,小姐:祝辞,0;,小姐:在祝辞=,1,{
if 打折期1,!=,0,{
result *=,
}
a *=,
}
return 结果
null
null
null
null
null
null
null