main.go 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375
  1. package yu_strconv
  2. // ParseInt32
  3. //
  4. // @Description: 解析 s 字符串对应的 i 值,s 可以是 "-" 开头
  5. func ParseInt32(s string) (i int32) {
  6. var j_neg bool
  7. for j_i := 0; j_i < len(s); j_i++ {
  8. if s[j_i] >= '0' && s[j_i] <= '9' {
  9. i = i*10 + int32(s[j_i]) - 48
  10. } else if j_i == 0 && s[j_i] == '-' {
  11. j_neg = true
  12. } else {
  13. break
  14. }
  15. }
  16. if j_neg {
  17. i = -i
  18. }
  19. return
  20. }
  21. // ParseUint32
  22. //
  23. // @Description: 解析 s 字符串对应的 i 值
  24. func ParseUint32(s string) (i uint32) {
  25. for j_i := 0; j_i < len(s); j_i++ {
  26. if s[j_i] >= '0' && s[j_i] <= '9' {
  27. i = i*10 + uint32(s[j_i]) - 48
  28. } else {
  29. break
  30. }
  31. }
  32. return
  33. }
  34. // ParseInt64
  35. //
  36. // @Description: 解析 s 字符串对应的 i 值,s 可以是 "-" 开头
  37. func ParseInt64(s string) (i int64) {
  38. var j_neg bool
  39. for j_i := 0; j_i < len(s); j_i++ {
  40. if s[j_i] >= '0' && s[j_i] <= '9' {
  41. i = i*10 + int64(s[j_i]) - 48
  42. } else if j_i == 0 && s[j_i] == '-' {
  43. j_neg = true
  44. } else {
  45. break
  46. }
  47. }
  48. if j_neg {
  49. i = -i
  50. }
  51. return
  52. }
  53. // ParseUint64
  54. //
  55. // @Description: 解析 s 字符串对应的 i 值
  56. func ParseUint64(s string) (i uint64) {
  57. for j_i := 0; j_i < len(s); j_i++ {
  58. if s[j_i] >= '0' && s[j_i] <= '9' {
  59. i = i*10 + uint64(s[j_i]) - 48
  60. } else {
  61. break
  62. }
  63. }
  64. return
  65. }
  66. // ParseInt
  67. //
  68. // @Description: 解析 s 字符串对应的 i 值,s 可以是 "-" 开头
  69. func ParseInt(s string) (i int) {
  70. var j_neg bool
  71. for j_i := 0; j_i < len(s); j_i++ {
  72. if s[j_i] >= '0' && s[j_i] <= '9' {
  73. i = i*10 + int(s[j_i]) - 48
  74. } else if j_i == 0 && s[j_i] == '-' {
  75. j_neg = true
  76. } else {
  77. break
  78. }
  79. }
  80. if j_neg {
  81. i = -i
  82. }
  83. return
  84. }
  85. // ParseUint
  86. //
  87. // @Description: 解析 s 字符串对应的 i 值
  88. func ParseUint(s string) (i uint) {
  89. for j_i := 0; j_i < len(s); j_i++ {
  90. if s[j_i] >= '0' && s[j_i] <= '9' {
  91. i = i*10 + uint(s[j_i]) - 48
  92. } else {
  93. break
  94. }
  95. }
  96. return
  97. }
  98. // ParseUintptr
  99. //
  100. // @Description: 解析 s 字符串对应的 i 值
  101. func ParseUintptr(s string) (i uintptr) {
  102. for j_i := 0; j_i < len(s); j_i++ {
  103. if s[j_i] >= '0' && s[j_i] <= '9' {
  104. i = i*10 + uintptr(s[j_i]) - 48
  105. } else {
  106. break
  107. }
  108. }
  109. return
  110. }
  111. var formatDigits = []uint8{
  112. '9', '8', '7', '6', '5', '4', '3', '2', '1',
  113. '0',
  114. '1', '2', '3', '4', '5', '6', '7', '8', '9',
  115. }
  116. // FormatByte
  117. //
  118. // @Description: 编码 i 值对应的字符串
  119. func FormatByte(i byte) string {
  120. if i == 0 {
  121. return "0"
  122. }
  123. j_s := make([]byte, 3)
  124. j_si := 2
  125. for ; i != 0; i /= 10 {
  126. j_s[j_si] = formatDigits[9-i%10]
  127. j_si--
  128. }
  129. j_si++
  130. return string(j_s[j_si:])
  131. }
  132. // FormatInt8
  133. //
  134. // @Description: 编码 i 值对应的字符串
  135. func FormatInt8(i int8) string {
  136. if i == 0 {
  137. return "0"
  138. }
  139. j_neg := i < 0
  140. j_s := make([]byte, 4)
  141. j_si := 3
  142. for ; i != 0; i /= 10 {
  143. j_s[j_si] = formatDigits[9-i%10]
  144. j_si--
  145. }
  146. if j_neg {
  147. j_s[j_si] = '-'
  148. } else {
  149. j_si++
  150. }
  151. return string(j_s[j_si:])
  152. }
  153. // FormatUint8
  154. //
  155. // @Description: 编码 i 值对应的字符串
  156. func FormatUint8(i uint8) string {
  157. if i == 0 {
  158. return "0"
  159. }
  160. j_s := make([]byte, 3)
  161. j_si := 2
  162. for ; i != 0; i /= 10 {
  163. j_s[j_si] = formatDigits[9-i%10]
  164. j_si--
  165. }
  166. j_si++
  167. return string(j_s[j_si:])
  168. }
  169. // FormatInt16
  170. //
  171. // @Description: 编码 i 值对应的字符串
  172. func FormatInt16(i int16) string {
  173. if i == 0 {
  174. return "0"
  175. }
  176. j_neg := i < 0
  177. j_s := make([]byte, 6)
  178. j_si := 5
  179. for ; i != 0; i /= 10 {
  180. j_s[j_si] = formatDigits[9-i%10]
  181. j_si--
  182. }
  183. if j_neg {
  184. j_s[j_si] = '-'
  185. } else {
  186. j_si++
  187. }
  188. return string(j_s[j_si:])
  189. }
  190. // FormatUint16
  191. //
  192. // @Description: 编码 i 值对应的字符串
  193. func FormatUint16(i uint16) string {
  194. if i == 0 {
  195. return "0"
  196. }
  197. j_s := make([]byte, 5)
  198. j_si := 4
  199. for ; i != 0; i /= 10 {
  200. j_s[j_si] = formatDigits[9-i%10]
  201. j_si--
  202. }
  203. j_si++
  204. return string(j_s[j_si:])
  205. }
  206. // FormatInt32
  207. //
  208. // @Description: 编码 i 值对应的字符串
  209. func FormatInt32(i int32) string {
  210. if i == 0 {
  211. return "0"
  212. }
  213. j_neg := i < 0
  214. j_s := make([]byte, 11)
  215. j_si := 10
  216. for ; i != 0; i /= 10 {
  217. j_s[j_si] = formatDigits[9-i%10]
  218. j_si--
  219. }
  220. if j_neg {
  221. j_s[j_si] = '-'
  222. } else {
  223. j_si++
  224. }
  225. return string(j_s[j_si:])
  226. }
  227. // FormatUint32
  228. //
  229. // @Description: 编码 i 值对应的字符串
  230. func FormatUint32(i uint32) string {
  231. if i == 0 {
  232. return "0"
  233. }
  234. j_s := make([]byte, 10)
  235. j_si := 9
  236. for ; i != 0; i /= 10 {
  237. j_s[j_si] = formatDigits[9-i%10]
  238. j_si--
  239. }
  240. j_si++
  241. return string(j_s[j_si:])
  242. }
  243. // FormatInt64
  244. //
  245. // @Description: 编码 i 值对应的字符串
  246. func FormatInt64(i int64) string {
  247. if i == 0 {
  248. return "0"
  249. }
  250. j_neg := i < 0
  251. j_s := make([]byte, 20)
  252. j_si := 19
  253. for ; i != 0; i /= 10 {
  254. j_s[j_si] = formatDigits[9-i%10]
  255. j_si--
  256. }
  257. if j_neg {
  258. j_s[j_si] = '-'
  259. } else {
  260. j_si++
  261. }
  262. return string(j_s[j_si:])
  263. }
  264. // FormatUint64
  265. //
  266. // @Description: 编码 i 值对应的字符串
  267. func FormatUint64(i uint64) string {
  268. if i == 0 {
  269. return "0"
  270. }
  271. j_s := make([]byte, 20)
  272. j_si := 19
  273. for ; i != 0; i /= 10 {
  274. j_s[j_si] = formatDigits[9-i%10]
  275. j_si--
  276. }
  277. j_si++
  278. return string(j_s[j_si:])
  279. }
  280. // FormatInt
  281. //
  282. // @Description: 编码 i 值对应的字符串
  283. func FormatInt(i int) string {
  284. if i == 0 {
  285. return "0"
  286. }
  287. j_neg := i < 0
  288. j_s := make([]byte, 20)
  289. j_si := 19
  290. for ; i != 0; i /= 10 {
  291. j_s[j_si] = formatDigits[9-i%10]
  292. j_si--
  293. }
  294. if j_neg {
  295. j_s[j_si] = '-'
  296. } else {
  297. j_si++
  298. }
  299. return string(j_s[j_si:])
  300. }
  301. // FormatUint
  302. //
  303. // @Description: 编码 i 值对应的字符串
  304. func FormatUint(i uint) string {
  305. if i == 0 {
  306. return "0"
  307. }
  308. j_s := make([]byte, 20)
  309. j_si := 19
  310. for ; i != 0; i /= 10 {
  311. j_s[j_si] = formatDigits[9-i%10]
  312. j_si--
  313. }
  314. j_si++
  315. return string(j_s[j_si:])
  316. }
  317. // FormatUintptr
  318. //
  319. // @Description: 编码 i 值对应的字符串
  320. func FormatUintptr(i uintptr) string {
  321. if i == 0 {
  322. return "0"
  323. }
  324. j_s := make([]byte, 20)
  325. j_si := 19
  326. for ; i != 0; i /= 10 {
  327. j_s[j_si] = formatDigits[9-i%10]
  328. j_si--
  329. }
  330. j_si++
  331. return string(j_s[j_si:])
  332. }
  333. // ParseBool
  334. //
  335. // @Description: 返回由字符串表示的布尔值。它接受 1、t、T、true、TRUE、True、0、f、F、false、FALSE、False 。
  336. func ParseBool(str string) bool {
  337. switch str {
  338. case "1", "t", "T", "true", "TRUE", "True":
  339. return true
  340. case "0", "f", "F", "false", "FALSE", "False":
  341. return false
  342. }
  343. return false
  344. }
  345. // FormatBool
  346. //
  347. // @Description: 根据b的值返回“true”或“false”。
  348. func FormatBool(b bool) string {
  349. if b {
  350. return "true"
  351. }
  352. return "false"
  353. }