获取int值的完整32位字符串(2)

本文介绍两种将32位整数转换为完整的32位二进制字符串的方法。第一种方法使用String.format结合Integer.toBinaryString,通过格式化字符串并用0填充左侧空白来实现;第二种方法通过循环前置0来拼接字符串达成目标。

上篇文章讲了如何通过String

format BigInteger的方式获取完整32位int字符串

其实还有其他方法可以是实现这样的需求


方法二

public static void main(String args[]){
    int a = 1;
    System.out.println(getFullBinaryString(a));
}
public static String getFullBinaryString(int num){
    String s = Integer.toBinaryString(num);
    String format = String.format("%32s", s);
    format = format.replaceAll(" ","0");
    return format;
}
打印结果如下:
0000 0000 0000 0000 0000 0000 0000 0001
这种方法的思路是,利用format字符串固定好长度,左边空余

可以补空格的这个特性,先把空格留出来,然后替换为0。


这种方式比较简单。


方法三

之前的方法都是通过format的方式来完成我们的需求

我们换种方式

public static void main(String args[]){
    int a = 1;
    System.out.println(getFullBinaryString(a));
}
public static String getFullBinaryString(int num){
    String result = Integer.toBinaryString(num);
    int count = 32-result.length();
    for (int i = 0;i<count;i++){
        result=0+result;
    }
    return result;
}
打印结果
0000 0000 0000 0000 0000 0000 0000 0001

这种方式比较好理解,也比较简单,只不过一直拼接字符串
稍微耗费了点性能,换成StringBuilder会比较好。








要从使用 `cJSON` 库创建或解析的 JSON 对象中获取字符串和整数,需要通过对象结构访问其子项,并检查数据项的类型以提相应的。 ### 获取字符串获取一个键对应的字符串,可以使用 `cJSON_GetObjectItemCaseSensitive` 函数来查找指定键的对象。如果找到且其类型为 `cJSON_String`,则可以通过访问 `valuestring` 成员来获取字符串: ```c cJSON *item = cJSON_GetObjectItemCaseSensitive(root, "key_name"); if (item && cJSON_IsString(item)) { printf("String value: %s\n", item->valuestring); } ``` ### 获取整数 类似地,对于整数类型的,同样使用 `cJSON_GetObjectItemCaseSensitive` 函数查找键并验证类型是否为 `cJSON_Number`,然后访问 `valueint` 成员: ```c cJSON *item = cJSON_GetObjectItemCaseSensitive(root, "key_name"); if (item && cJSON_IsNumber(item)) { printf("Integer value: %d\n", item->valueint); } ``` ### 示例代码 以下是一个完整的示例,展示如何从一个预先解析好的 JSON 对象中提字符串和整数: ```c #include "cJSON.h" #include <stdio.h> int main() { const char *json_str = "{\"name\":\"Alice\",\"age\":30}"; cJSON *root = cJSON_Parse(json_str); if (root == NULL) { printf("Error parsing JSON.\n"); return -1; } cJSON *name = cJSON_GetObjectItemCaseSensitive(root, "name"); if (name && cJSON_IsString(name)) { printf("Name: %s\n", name->valuestring); } cJSON *age = cJSON_GetObjectItemCaseSensitive(root, "age"); if (age && cJSON_IsNumber(age)) { printf("Age: %d\n", age->valueint); } cJSON_Delete(root); return 0; } ``` 在这个示例中: - 使用 `cJSON_Parse` 解析了一个 JSON 字符串。 - 利用 `cJSON_GetObjectItemCaseSensitive` 和类型检查获取了 `"name"` 的字符串和 `"age"` 的整数。 - 最后调用 `cJSON_Delete` 释放内存[^1]。 ### 注意事项 - 在操作前确保对指针进行有效性检查,避免空指针异常。 - 每次使用完 `cJSON` 对象后必须调用 `cJSON_Delete` 进行清理,以防止内存泄漏[^1]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值