You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何生成含256个16字节元素的递增十六进制数组?

生成256个16字节十六进制字符串数组的解决方案

以下是满足需求的完整代码:

#include <stdio.h>
#include <string.h>

int main()
{
    // 每个元素需存储32个十六进制字符 + 1个字符串终止符'\0'
    char arr[256][33];
    for(int i = 0; i < 256; i++)
    {
        // 格式化生成十六进制字符串:前15字节对应30个"00",最后1字节为i的两位十六进制
        snprintf(arr[i], sizeof(arr[i]), "000000000000000000000000000000%02X", i);
        // 打印验证每个字符串
        printf("%s\n", arr[i]);
    }
    return 0;
}

原代码的问题分析

  1. 你最初的代码将unsigned char数组当作字符串使用,但数组中存储的是0x00字节(而非字符'0'),printf("%s")会把第一个0x00视为字符串结束符,因此仅输出换行。
  2. 原框架中的unsigned char arr[256][16]空间不足:16字节的十六进制表示需要32个字符,加上字符串终止符'\0',每个元素至少需要33个存储位置。

关键代码说明

  • char arr[256][33]:正确分配存储空间,确保每个元素能容纳完整的十六进制字符串及终止符。
  • snprintf函数安全地格式化字符串,避免缓冲区溢出:
    • 前30个字符固定为"00"重复15次,对应前15个字节的0x00。
    • %02X将整数i转换为两位大写十六进制字符串,不足两位时自动补0,对应第16个字节的数值。若需要小写十六进制,改用%02x即可。

内容的提问来源于stack exchange,提问作者freyfrey01

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 18:50:30