byte数组转换成十六进制字符串

该方法通过遍历byte数组,对每个字节应用Integer.toHexString()函数,然后将结果转换为十六进制字符串。如果转换后的字符串长度小于2,则在其前面添加0,以确保每个字节的十六进制表示始终为两位。最后,所有字符串连接成一个大的十六进制字符串并返回。

byte数组转换成十六进制字符串

    /**
     * byte数组转换成十六进制字符串
     *
     * @param bArr
     * @return res
     */
    public static final String bytesToHexString(byte[] bArray) {
        StringBuffer sb = new StringBuffer(bArray.length);
        String sTemp;
        for (int i = 0; i < bArray.length; i++) {
            sTemp = Integer.toHexString(0xFF & bArray[i]);
            if (sTemp.length() < 2)
                sb.append(0);
            sb.append(sTemp.toUpperCase());
        }
        return sb.toString();
    }
### 使用 Gin 框架实现 CRUD(增删改查)操作 #### 创建项目结构并初始化依赖项 为了使用 GinGORM 来处理 CRUD 操作,首先需要设置好 Go 项目的环境。安装必要的包: ```bash go mod init example.com/gin-crud-demo go get -u github.com/gin-gonic/gin go get -u gorm.io/gorm go get -u gorm.io/driver/sqlite ``` #### 定义数据模型 定义 `Product` 结构体作为数据库中的表模型[^2]。 ```go type Product struct { gorm.Model Code string Price uint } ``` #### 初始化数据库连接 建立与 SQLite 数据库的连接,并自动迁移模式以创建相应的表格。 ```go import ( "gorm.io/driver/sqlite" "gorm.io/gorm" ) func InitDB() *gorm.DB { db, err := gorm.Open(sqlite.Open("test.db"), &gorm.Config{}) if err != nil { panic("failed to connect database") } // 自动迁移模式 db.AutoMigrate(&Product{}) return db } ``` #### 设置路由和控制器逻辑 编写 HTTP API 路由以及对应的业务逻辑函数来完成 CRUD 功能。 ```go package main import ( "net/http" "github.com/gin-gonic/gin" ) var DB = InitDB() // 获取所有产品列表 func GetProducts(c *gin.Context) { var products []Product result := DB.Find(&products) if result.Error != nil { c.JSON(http.StatusInternalServerError, gin.H{"error": result.Error}) return } c.JSON(http.StatusOK, products) } // 添加新产品 func CreateProduct(c *gin.Context) { var input Product if err := c.ShouldBindJSON(&input); err == nil { createErr := DB.Create(&input).Error if createErr != nil { c.JSON(http.StatusBadRequest, gin.H{"error": createErr}) return } c.JSON(http.StatusOK, input) } else { c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()}) } } // 更新指定ID的产品信息 func UpdateProduct(c *gin.Context) { id := c.Params.ByName("id") var product Product if err := DB.Where("id = ?", id).First(&product).Error; err != nil { c.JSON(http.StatusBadRequest, gin.H{"error": "Record not found!"}) return } updateErr := DB.Model(&product).Updates(Product{Code: c.PostForm("code"), Price: c.PostFormUint("price")}).Error if updateErr != nil { c.JSON(http.StatusBadRequest, gin.H{"error": updateErr}) return } c.JSON(http.StatusOK, product) } // 删除指定ID的产品记录 func DeleteProduct(c *gin.Context) { id := c.Params.ByName("id") var product Product d := DB.Delete(&product, id) if d.Error != nil { c.JSON(http.StatusBadRequest, gin.H{"error": d.Error}) return } c.JSON(http.StatusOK, gin.H{"id #" + id: "deleted"}) } func SetupRouter() *gin.Engine { r := gin.Default() apiV1 := r.Group("/api/v1") { apiV1.GET("/products", GetProducts) apiV1.POST("/products", CreateProduct) apiV1.PUT("/products/:id", UpdateProduct) apiV1.DELETE("/products/:id", DeleteProduct) } return r } func main() { router := SetupRouter() router.Run(":8080") } ``` 此代码片段展示了如何利用 Gin 框架配合 GORM ORM 库执行基本的数据持久化任务——即所谓的 CRUD 操作。每种操作都对应着 RESTful 风格下的不同 URL 地址及其请求方法[^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

OOObject

你的鼓励是我创作的最大源泉

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值