package jdshopapi import ( "bytes" "crypto/aes" "crypto/cipher" "encoding/base64" "fmt" "git.rosy.net.cn/baseapi/utils" "golang.org/x/text/encoding/simplifiedchinese" "golang.org/x/text/transform" "io/ioutil" "math" "sort" "strconv" "testing" ) func TestCreateShopCategory(t *testing.T) { var CreateShopCategoryParams = []*CreateShopCategoryParam{ &CreateShopCategoryParam{ HomeShow: "0", ID: "1", Open: "", OrderNo: "0", ParentID: "", Title: "测试1", Type: "3", }, } result, _ := api.CreateShopCategory(CreateShopCategoryParams) fmt.Println(result) } func TestUpdateStoreStatus(t *testing.T) { err := api.UpdateStoreStatus(24332466, 1) if err != nil { t.Fatal(err) } } func TestNewInfoList(t *testing.T) { result, err := api.NewInfoList(1) if err != nil { t.Fatal(err) } t.Log(utils.Format4Output(result, false)) } func Test11(t *testing.T) { change := func(s ...string) { s[0] = "Go" s = append(s, "playground") fmt.Println(s) } welcome := []string{"hello", "world"} change(welcome...) fmt.Println(welcome) } func TestAllOrders(t *testing.T) { result, err := api.AllOrders(&AllOrdersParam{ Current: 1, PageSize: 1, OrderID: "206317669879", }) if err != nil { t.Fatal(err) } t.Log(utils.Format4Output(result, false)) } func TestOrderDetail(t *testing.T) { result, err := api.OrderDetail("213676047946") if err != nil { t.Fatal(err) } t.Log(utils.Format4Output(result, false)) } func TestPhoneSensltiveInfo(t *testing.T) { result, err := api.PhoneSensltiveInfo("124396047880", "10b1707dc87755373d488a7a4f422f7d") if err != nil { t.Fatal(err) } t.Log(utils.Format4Output(result, false)) } func TestUpdateWaybill(t *testing.T) { err := api.UpdateWaybill("123076499052", "1274", "88328977356545 ") if err != nil { t.Fatal(err) } // t.Log(utils.Format4Output(result, false)) } func TestTryGetCookie(t *testing.T) { result, err := api.TryGetCookie() if err != nil { t.Fatal(err) } t.Log(utils.Format4Output(result, false)) } func TestAAADS(t *testing.T) { key, _ := base64.StdEncoding.DecodeString("DW+rL8hlSFt65gUnDXW13A==") data, _ := base64.StdEncoding.DecodeString("Zh1/Gnb3GWkt7slPocCh5EjgfCrivUMrEjQZT+ND2fsDZYGXIny8NazZJ7UA8DgMpuJf9vBPlf3C8l8oT7aYebJMhAEx8kRFdQip8yEFqbzTfHfnNnMsI4Wkh1Ij06iLiZITnPUdWsuHjwI7BKKmZFDloiOkn3p+gtACFThm7B03SfPmvOdokdIQvDa1nEzPL/2DkfhAwDPxzgGHI0HaAQ==") iv, _ := base64.StdEncoding.DecodeString("BBYl0UZhgnV59eP6MkxeeQ==") result, _ := Decrypt(data, key, iv) fmt.Println(string(result)) } func Decrypt(decryptBytes, key, iv []byte) ([]byte, error) { block, err := aes.NewCipher(key) if err != nil { return nil, err } blockMode := cipher.NewCBCDecrypter(block, iv) blockMode.CryptBlocks(decryptBytes, decryptBytes) return PKCS5UnPadding(decryptBytes), nil } func PKCS5UnPadding(decrypted []byte) []byte { length := len(decrypted) unPadding := int(decrypted[length-1]) return decrypted[:(length - unPadding)] } func TestShopDetail(t *testing.T) { //result, err := api.ShopDetail(1000069719) //if err != nil { // t.Fatal(err) //} //t.Log(utils.Format4Output(result, false)) retVal, err := utils.TryStr2Time("2021-07-15 :00") fmt.Println(retVal, err) } func TestSubmitBasic(t *testing.T) { result, err := api.SubmitBasic(&UpdateBasicParam{ StoreName: "京西菜市石犀市场生鲜店", CategoryID2: 62, Coordinate: "30.692941,103.858781", BussinessBeginTime: "08:30", BussinessEndTime: "20:00", ImgURL: "jfs/t1/141918/10/14803/148865/5fb4e8cbE95a606cb/08a8dc277eb97a16.png", StorePhone: "13706546496", AddName: "四川成都市温江区@!温江区锦泉街116号(优取舍)", // AddCode1: 22, // AddCode2: 1930, AddCode3: 49315, CategoryID1: 34, QualificationRequests: []*QualificationRequests{ &QualificationRequests{ QualificationID: 41, QualificationName: "营业执照", QualificationNo: "11111", QualificationURL: "jfs/t1/148622/37/14846/10266/5fb4e3e2Ef2f61870/a7cfba9c1513d95e.png", StartTime: "2020-11-04 00:00:00", EndingTime: "2020-11-06 23:59:59", Time: []string{"2020-11-04 00:00:00", "2020-11-06 23:59:59"}, }, }, }) if err != nil { t.Fatal(err) } t.Log(utils.Format4Output(result, false)) } func TestUpdateBasic(t *testing.T) { shop, _ := api.ShopList(1) for _, v := range shop.List { detail, _ := api.ShopDetail(v.StoreID) api.UpdateBasic(&UpdateBasicParam{ StoreID: detail.StoreID, StoreName: detail.StoreName, CategoryID2: 62, Coordinate: detail.Coordinate, BussinessBeginTime: detail.BussinessBeginTime, BussinessEndTime: detail.BussinessEndTime, ImgURL: detail.ImgURL, StorePhone: detail.StorePhone, AddName: utils.LimitUTF8StringLen(detail.AddName, 100), AddCode1: detail.AddCode1, AddCode2: detail.AddCode2, AddCode3: detail.AddCode3, CategoryID1: 34, QualificationRequests: []*QualificationRequests{ &QualificationRequests{ QualificationID: 41, QualificationName: "营业执照", QualificationNo: "91510106MA62QYUK9X", QualificationURL: "jfs/t1/140863/13/17145/275844/5fc9ac7aE9a5f8d68/f9d459176d463cb5.jpg", StartTime: "2017-03-01 00:00:00", EndingTime: "2027-03-01 00:00:00", Time: []string{"2017-03-01 00:00:00", "2027-03-01 00:00:00"}, }, }, }) } // t.Log(utils.Format4Output(result, false)) } func TestUpdateExpand(t *testing.T) { data, _, _ := DownloadFileByURL("http://image.jxc4.com/image/ac6c79112a0330006b40af3302df9f46.jpg") fmt.Println(string(data)) } func TestCreateGisFence(t *testing.T) { err := api.CreateGisFence(1000069001, "3") if err != nil { t.Fatal(err) } // t.Log(utils.Format4Output(result, false)) } func TestUpdateDeliveryPromise(t *testing.T) { err := api.UpdateDeliveryPromise("09:00", "20:00", 1000070127) if err != nil { t.Fatal(err) } // t.Log(utils.Format4Output(result, false)) } func TestUploadImageNew(t *testing.T) { //dp[m][n] = dp[m-1][n] + dp[m][n-1] fmt.Println(myAtoi("21A")) } func myAtoi(s string) (r int) { abs, sign, i, n := 0, 1, 0, len(s) for i < n && s[i] == ' ' { i++ } if i < n { if s[i] == '-' { sign = -1 i++ } else if s[i] == '+' { sign = 1 i++ } } for i < n && s[i] >= '0' && s[i] <= '9' { abs = 10*abs + int(s[i]-'0') //字节 byte '0' == 48 if sign*abs < math.MinInt32 { //整数超过 32 位有符号整数范围 return math.MinInt32 } else if sign*abs > math.MaxInt32 { return math.MaxInt32 } i++ } return r } func minCostClimbingStairs(cost []int) int { min := func(a, b int) int { if a < b { return a } return b } var dp = make([]int, len(cost)) dp[0] = 0 dp[1] = 0 for i := 2; i < len(cost); i++ { dp[i] = min(dp[i-1]+cost[i], dp[i-2]+cost[i-1]) } return dp[len(cost)] } func climbStairs(n int) int { a, b, c := 0, 0, 1 for i := 1; i < n+1; i++ { a = b b = c c = a + b } return c } //leetcode 1876 func countGoodSubstrings(s string) int { if len(s) < 3 { return 0 } count := 0 a, b, c := s[0:1], s[1:2], s[2:3] for i := 3; i < len(s)+1; i++ { if a != b && b != c && a != c { count++ } if i == len(s) { break } a = b b = c c = s[i : i+1] } return count } //T0 = 0, T1 = 1, T2 = 1, 且在 n >= 0 的条件下 Tn+3 = Tn + Tn+1 + Tn+2 func tribonacci(n int) int { if n == 0 || n == 1 { return n } if n == 2 { return 1 } var tris = make([]int, n+1) tris[0] = 0 tris[1] = 1 tris[2] = 1 for i := 3; i < n+1; i++ { tris[i] = tris[i-1] + tris[i-2] + tris[i-3] } return tris[n] } func fib(n int) (result int) { //if n == 0 || n == 1 { // return n //} //var fibs = make([]int, n+1) //fibs[0] = 0 //fibs[1] = 1 //for i := 2; i < n+1; i++ { // fibs[i] = fibs[i-1] + fibs[i-2] //} //return fibs[n] if n == 0 || n == 1 { return n } a, b, c := 0, 0, 1 for i := 2; i < n+1; i++ { a = b b = c c = a + b } return c } //经典dp func dp2(m, n int) (result int) { var dp = make([][]int, m) for i := 0; i < m; i++ { dp[i] = make([]int, n) for j := 0; j < n; j++ { if i == 0 || j == 0 { dp[i][j] = 1 } else { dp[i][j] = dp[i-1][j] + dp[i][j-1] } } } return dp[m-1][n-1] } func a(n int) (ans int) { const mod int = 1e9 + 7 dp := make([][2][3]int, n+1) // 三个维度分别表示:长度,A 的数量,结尾连续 L 的数量 dp[0][0][0] = 1 for i := 1; i <= n; i++ { // 以 P 结尾的数量 for j := 0; j <= 1; j++ { for k := 0; k <= 2; k++ { dp[i][j][0] = (dp[i][j][0] + dp[i-1][j][k]) % mod } } // 以 A 结尾的数量 for k := 0; k <= 2; k++ { dp[i][1][0] = (dp[i][1][0] + dp[i-1][0][k]) % mod } // 以 L 结尾的数量 for j := 0; j <= 1; j++ { for k := 1; k <= 2; k++ { dp[i][j][k] = (dp[i][j][k] + dp[i-1][j][k-1]) % mod } } } for j := 0; j <= 1; j++ { for k := 0; k <= 2; k++ { ans = (ans + dp[n][j][k]) % mod } } return ans } func checkRecord(s string) bool { countL := 0 countA := 0 for _, v := range s { if v == 'A' { countA++ if countA > 1 { return false } } if v == 'L' { countL++ if countL > 2 { return false } } else { countL = 0 } } return true } func sink(array []int, length int) { start := 0 for { //2*n+1 可以画图就知道为什么了,是左边子节点 next := 2*start + 1 if next > length { break } if next+1 <= length && array[next+1] < array[next] { next++ } //上层小于下面,不用互换了 if array[start] <= array[next] { break } //互换继续下沉 array[start], array[next] = array[next], array[start] start = next } } //堆 //top k func topk(s []int, k, i int) { for { left := i*2 + 1 right := i*2 + 2 if i < 0 { break } if right == k { if s[i] < s[left] { s[i], s[left] = s[left], s[i] } } else { if s[i] < s[left] || s[i] < s[right] { if s[left] < s[right] { s[i], s[right] = s[right], s[i] } else { s[i], s[left] = s[left], s[i] } } } if i-1 < 0 { break } i = (i - 1) / 2 } fmt.Println("loop s", s) } //给定一个包含正整数、加(+)、减(-)、乘(*)、除(/)的算数表达式(括号除外),计算其结果。 //表达式仅包含非负整数,+, - ,*,/ 四种运算符和空格  。 整数除法仅保留整数部分。 func calculate(s string) int { return 1 } //输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。 func spiralOrder(matrix [][]int) []int { var result []int if len(matrix) == 0 { return result } else { if len(matrix[0]) == 0 { return result } } l, h := len(matrix[0]), len(matrix) left, right, top, bottom := 0, l-1, 0, h-1 lmax, tmax := 0, 0 if l%2 == 0 { lmax = l / 2 } else { lmax = l/2 + 1 } if h%2 == 0 { tmax = l / 2 } else { tmax = l/2 + 1 } for left <= lmax && top+1 <= tmax { for left1 := left; left1 <= right; left1++ { if len(result) >= l*h { break } result = append(result, matrix[top][left1]) } if h > 1 { for top1 := top + 1; top1 <= bottom; top1++ { if len(result) >= l*h { break } result = append(result, matrix[top1][right]) } if right > 0 { for right1 := right - 1; right1 >= left; right1-- { if len(result) >= l*h { break } result = append(result, matrix[bottom][right1]) } } if bottom > 0 { for bottom1 := bottom - 1; bottom1 >= top+1; bottom1-- { if len(result) >= l*h { break } result = append(result, matrix[bottom1][left]) } } } left++ top++ right-- bottom-- } return result } func addToArrayForm(A []int, K int) (a []int) { B := []int{} lengthK := 0 for i := 10; ; i = i * 10 { if K/i == 0 { lengthK++ break } lengthK++ } for i := lengthK; i > 0; i-- { if i == lengthK { B = append(B, K/int(math.Pow10(i-1))) } else if i == 1 { gw := K for j := lengthK; j > 1; j-- { gw = gw % int(math.Pow10(j-1)) } B = append(B, gw) } else { qtw := K for j := lengthK; j > 1; j-- { if j == i { qtw = qtw / int(math.Pow10(j-1)) break } else { qtw = qtw % int(math.Pow10(j-1)) } } B = append(B, qtw) } } flag := false in := 0 for k := len(A) - 1; k >= 0; { if flag { break } for k1 := len(B) - 1; k1 >= 0; { if A[k]+B[k1]+in < 10 { if in == 0 { a = append(a, A[k]+B[k1]) } else { a = append(a, A[k]+B[k1]+in) } in = 0 } else { if in == 0 { a = append(a, (A[k]+B[k1])%10) } else { a = append(a, (A[k]+B[k1]+in)%10) } in = 0 in++ } k-- k1-- if k == -1 && k1 == -1 && in != 0 { a = append(a, 1) } if k < 0 { in2 := 0 for i := k1; i >= 0; i-- { if B[i]+in+in2 < 10 { if in2 == 0 { a = append(a, B[i]+in) } else { a = append(a, B[i]+in2+in) } in = 0 in2 = 0 } else { if in2 == 0 { a = append(a, (B[i]+in)%10) } else { a = append(a, (B[i]+in+in2)%10) } in = 0 in2 = 0 in2++ } if i == 0 && in2 != 0 { a = append(a, 1) } } flag = true break } if k1 < 0 { in2 := 0 for i := k; i >= 0; i-- { if A[i]+in+in2 < 10 { if in2 == 0 { a = append(a, A[i]+in) } else { a = append(a, A[i]+in2+in) } in = 0 in2 = 0 } else { if in2 == 0 { a = append(a, (A[i]+in)%10) } else { a = append(a, (A[i]+in+in2)%10) } in = 0 in2 = 0 in2++ } if i == 0 && in2 != 0 { a = append(a, 1) } } flag = true break } } } for i := 0; i < len(a)/2; i++ { temp := a[i] a[i] = a[len(a)-i-1] a[len(a)-i-1] = temp } return a } func maximumProduct(nums []int) int { sort.Ints(nums) n := len(nums) fmt.Println(nums) return max(nums[0]*nums[1]*nums[n-1], nums[n-3]*nums[n-2]*nums[n-1]) } func max(a, b int) int { if a > b { return a } return b } func accountsMerge(accounts [][]string) (ans [][]string) { emailToIndex := map[string]int{} emailToName := map[string]string{} for _, account := range accounts { name := account[0] for _, email := range account[1:] { if _, has := emailToIndex[email]; !has { emailToIndex[email] = len(emailToIndex) emailToName[email] = name } } } fmt.Println(emailToIndex) fmt.Println() fmt.Println(emailToName) parent := make([]int, len(emailToIndex)) for i := range parent { parent[i] = i } var find func(int) int find = func(x int) int { if parent[x] != x { parent[x] = find(parent[x]) } return parent[x] } union := func(from, to int) { parent[find(from)] = find(to) } for _, account := range accounts { firstIndex := emailToIndex[account[1]] for _, email := range account[2:] { union(emailToIndex[email], firstIndex) } } fmt.Println(parent) fmt.Println() fmt.Println(accounts) indexToEmails := map[int][]string{} for email, index := range emailToIndex { index = find(index) indexToEmails[index] = append(indexToEmails[index], email) } fmt.Println(indexToEmails) for _, emails := range indexToEmails { sort.Strings(emails) account := append([]string{emailToName[emails[0]]}, emails...) ans = append(ans, account) } return } func findRedundantConnection(edges [][]int) []int { parent := make([]int, len(edges)+1) for i := range parent { parent[i] = i } fmt.Println("edges ", edges) fmt.Println("parent ", parent) var find func(int) int find = func(x int) int { if parent[x] != x { parent[x] = find(parent[x]) } return parent[x] } union := func(from, to int) bool { fmt.Println(from, to) x, y := find(from), find(to) fmt.Println(x, y) if x == y { return false } parent[x] = y fmt.Println(parent) fmt.Println("-------------------------------") return true } for _, e := range edges { if !union(e[0], e[1]) { return e } } return nil } func removeStones(stones [][]int) int { fa := map[int]int{} var find func(int) int find = func(x int) int { if _, has := fa[x]; !has { fa[x] = x } if fa[x] != x { fa[x] = find(fa[x]) } fmt.Println(fa[x]) return fa[x] } union := func(x, y int) { fmt.Println(x, y) fx, fy := find(x), find(y) if fx == fy { return } fa[fy] = fx fmt.Println(fa) } for _, p := range stones { union(p[0], p[1]+10000) } ans := len(stones) for x, fx := range fa { if x == fx { ans-- } } return ans } //动态规划 func maxUncrossedLines(A []int, B []int) (s int) { var dynamic = make([][]int, len(A)+1, len(A)+1) for index := range dynamic { dynamic[index] = make([]int, len(B)+1, len(B)+1) //多创建一列,因为 index = 0 的时候,没有前置匹配 } for _, v := range dynamic { fmt.Println(v) } fmt.Println("---------------------") for index, a := range A { for i, b := range B { if a == b { dynamic[index+1][i+1] = dynamic[index][i] + 1 for _, v := range dynamic { fmt.Println(v) } fmt.Println("---------------------") } else { dynamic[index+1][i+1] = dynamic[index][i+1] if dynamic[index+1][i+1] < dynamic[index+1][i] { dynamic[index+1][i+1] = dynamic[index+1][i] //判断大小,取大值 } for _, v := range dynamic { fmt.Println(v) } fmt.Println("---------------------") } } } return dynamic[len(A)][len(B)] } func TestShopList(t *testing.T) { result, err := api.ShopList(25) if err != nil { t.Fatal(err) } fmt.Println("aaaaaaa", len(result.List)) t.Log(utils.Format4Output(result, false)) } func TestWareSave(t *testing.T) { // desc := `

因生鲜比较脆弱,发货途中如果有磕碰损坏,请收到联系客服,闪电赔付。请核对好地址,发货后不可修改地址,因改地址导致损坏不能赔付,谢谢理解



` params := &WareSaveParam{ WareID: 0, Height: 100, CategoryID: 13574, LastCategoryID: 13574, VenderID: 10569615, BrandID: 44259, Length: 200, Wide: 100, WareStatus: 8, Title: "散养土鸡蛋新鲜鸡蛋草鸡蛋柴鸡蛋顺丰包邮测试", Weight: "1", ShopCategorys: []int{15602325}, Notes: `



`, Skus: []*WareSaveSkus{ &WareSaveSkus{ // SkuID: 10024685331653, JdPrice: "25", StockNum: 9999, Props: []*WareSaveSkusProp{ &WareSaveSkusProp{ AttrID: 1001027603, AttrValues: 2517633718, AttrValueAlias: "20个", }, }, OuterID: "6045735", }, // &WareSaveSkus{ // JdPrice: "31", // StockNum: 5, // Props: []*WareSaveSkusProp{ // &WareSaveSkusProp{ // AttrID: 1000022043, // AttrValues: 2515430634, // AttrValueAlias: "500g", // }, // }, // }, }, PromiseID: 0, MultiCateProps: []interface{}{}, PropsSet: []interface{}{}, SaleAttrs: []interface{}{}, TransparentImageAudit: []interface{}{}, OptionType: 1, AvailableFeatures: []interface{}{}, CharacteristicService: []interface{}{}, ExtendFeatures: []interface{}{}, TempID: "10569615110055200", //必须要这个东西,不知道是啥 } params.ImageMap.Num0000000000 = append(params.ImageMap.Num0000000000, &CreateSkuParamImages{ ColorID: "0000000000", ImgIndex: 1, ImgURL: "jfs/t1/149724/17/15786/39416/5fbf645aE948e4d7a/b13bcaee129676b2.jpg", // ImgZoneID: "0000000000", }) // , &CreateSkuParamImages{ // ColorID: "0000000000", // ImgIndex: 2, // ImgURL: "jfs/t1/142006/30/15024/504060/5fb636d4Ef12079f7/2adad323cbcf7c52.jpg", // // ImgZoneID: "0000000000", // }) result, err := api.WareSave(params) if err != nil { t.Fatal(err) } t.Log(utils.Format4Output(result, false)) } func TestWareDoUpdate(t *testing.T) { err := api.WareDoUpdate("up", "10020536451427") if err != nil { t.Fatal(err) } // t.Log(utils.Format4Output(result, false)) } func TestStoreWareDoUpdate(t *testing.T) { err := api.StoreWareDoUpdate(1, 10024685331653, "1000063128") if err != nil { t.Fatal(err) } // t.Log(utils.Format4Output(result, false)) } func TestStoreUpdatePrice(t *testing.T) { err := api.StoreUpdatePrice("16", 10033611936135, "1000116473") if err != nil { t.Fatal(err) } // t.Log(utils.Format4Output(result, false)) } func TestStoreUpdateStock(t *testing.T) { err := api.StoreUpdateStock(80, 10024685331653, "1000063128") if err != nil { t.Fatal(err) } // t.Log(utils.Format4Output(result, false)) } func TestStoreSkuBindStore(t *testing.T) { err := api.StoreSkuBindStore(false, []string{"10024685331653"}, []string{"1000063128"}) if err != nil { t.Fatal(err) } // t.Log(utils.Format4Output(result, false)) } func TestSetOrderStateToWait(t *testing.T) { err := api.SetOrderStateToWait(1) if err != nil { t.Fatal(err) } // t.Log(utils.Format4Output(result, false)) } func TestStoreProductSearch(t *testing.T) { result, _, err := api.StoreProductSearch(1, 20, []string{"1000069025"}) if err != nil { t.Fatal(err) } t.Log(utils.Format4Output(result, false)) } //二进制转十六进制 func btox(b string) string { base, _ := strconv.ParseInt(b, 2, 10) return strconv.FormatInt(base, 16) } //十六进制转二进制 func xtob(x string) string { base, _ := strconv.ParseInt(x, 16, 10) return strconv.FormatInt(base, 2) } func h8l82int(h, l string) (i int64) { s1, s2 := xtob(h), xtob(l) flag1 := 8 - len(s1) flag2 := 8 - len(s2) for m := 0; m < flag1; m++ { s1 = "0" + s1 } for j := 0; j < flag2; j++ { s2 = "0" + s2 } i, _ = strconv.ParseInt(s1+s2, 2, 32) return i } func TestUpdateStatus(t *testing.T) { //data2 := []byte{0x00, 0x01} //key := RandStringBytes(16) //data, _ := Utf8ToGbk([]byte("[v2]")) //fmt.Println(int2h8l8(int64(len("fd003401005b76325dc8d5d5d5cfe3c2afc9fad7cfd1cca3acd2a3bfb4c6d9b2bcb9d2c7b0b4a8a3acb7c9c1f7d6b1cfc2c8fdc7a7b3dfa3acd2c9cac7d2f8bad3c2e4bec5ccec") / 2))) //fmt.Println(hex.EncodeToString(data)) //fmt.Println(fmt.Sprintf("%x", len("fd003401005b76325dc8d5d5d5cfe3c2afc9fad7cfd1cca3acd2a3bfb4c6d9b2bcb9d2c7b0b4a8a3acb7c9c1f7d6b1cfc2c8fdc7a7b3dfa3acd2c9cac7d2f8bad3c2e4bec5ccec")/2)) //mobile := &alipayapi.KeyMobile{} //data, _ := base64.StdEncoding.DecodeString("QWja44PbYifX70Y74N3PU2dG2VedZFqqeXJhXV8g9cALnCOyXt25K6z2RQtAXlJR") //key, _ := base64.StdEncoding.DecodeString("GHp3ojlVYRRu2XID4FX2ew==") //iv := []byte{} //iv = append(iv, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) //if result, err := utils.AESCBCDecpryt(data, key, iv); err == nil && result != nil { // json.Unmarshal(result, &mobile) //} //fmt.Println(utils.Format4Output(mobile, true)) //data := "1e00180200015032303231303631353030303031308628e9" //orderNo := h8l82int(data[len(data)-6:len(data)-4], data[len(data)-4:len(data)-2]) //base, _ := strconv.ParseInt(data[len(data)-6:len(data)-4]+data[len(data)-4:len(data)-2], 16, 10) i, _ := strconv.ParseInt("8628", 16, 32) fmt.Println(xtob("86"), xtob("28"), i) } func sss() (data2 []byte) { dataLen := 34 data2 = make([]byte, 2) data2[0] = (uint8)((dataLen & 0xFF00) >> 8) data2[1] = (uint8)(dataLen & 0xFF) return data2 } func Utf8ToGbk(str []byte) (b []byte, err error) { r := transform.NewReader(bytes.NewReader(str), simplifiedchinese.GBK.NewEncoder()) b, err = ioutil.ReadAll(r) if err != nil { return } return } func int2h8l8(i int64) (h, l string) { origin2 := fmt.Sprintf("%b", i) flag := 16 - len(origin2) for i := 0; i < flag; i++ { origin2 = "0" + origin2 } begin8 := origin2[:8] end8 := origin2[8:] r1, _ := strconv.ParseInt(begin8, 2, 32) r2, _ := strconv.ParseInt(end8, 2, 32) h = fmt.Sprintf("%x", r1) l = fmt.Sprintf("%x", r2) if len(h) < 2 { h = "0" + h } if len(l) < 2 { l = "0" + l } return h, l } func Hextob(str string) []byte { slen := len(str) bHex := make([]byte, len(str)/2) ii := 0 for i := 0; i < len(str); i = i + 2 { if slen != 1 { ss := string(str[i]) + string(str[i+1]) bt, _ := strconv.ParseInt(ss, 16, 32) bHex[ii] = byte(bt) ii = ii + 1 slen = slen - 2 } } return bHex }