java 中,将Int 或者 byte 数据用二进制或者16进制打印出来

我们想看到byte类型的二进制打印结果,想看到int类型的二进制打印结果,还有16进制的;

如何做呢?这里总结一个小代码,便于以后查询:


int 类型,打印成二进制数据

int iValue = 13;
String binaryString = Integer.toBinaryString();
System.out.println(binaryString);

结果:
<pre name="code" class="plain">1101

 int 类型,打印成16进制 

int ivalue = 13;
String hexString = Integer.toHexString(ivalue);
system.out.println("binaryString = " + hexString);

结果:

hexString = d


同样的 byte类型的数据打印成二进制

byte ivalue = (byte)24;
String binaryString = Integer.toBinaryString(ivalue);
System.out.println("binaryString = " + binaryString);

结果:

11000

byte 类型的数据打印成16进制

byte ivalue = (byte)24;
String hexString = Integer.toHexString(ivalue);
System.out.println("binaryString = " + hexString);

结果

18

  • 7
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
以下是对20byte数据进行二进制算术编码的C语言实现: ```c #include <stdio.h> #include <stdlib.h> #include <stdint.h> #define MAX_CODE 0xFFFFFFFF typedef struct { uint32_t low; // 下界 uint32_t high; // 上界 uint32_t code; // 区间编码 } Range; void encode(char *data, int len) { // 初始化符号概率,这里假设每个符号出现概率相等 uint32_t freq[256] = {0}; for (int i = 0; i < len; i++) { freq[(unsigned char)data[i]]++; } uint32_t total = len; for (int i = 0; i < 256; i++) { if (freq[i] > 0) { freq[i] = (freq[i] << 16) / total; if (freq[i] == 0) { freq[i] = 1; } } } Range range = {0, MAX_CODE, 0}; // 初始化区间编码器 for (int i = 0; i < len; i++) { uint32_t symbol = (unsigned char)data[i]; uint32_t lcode = range.low + freq[symbol] * (range.high - range.low) >> 16; uint32_t hcode = range.low + freq[symbol + 1] * (range.high - range.low) >> 16; range.low = lcode; range.high = hcode; // 将区间编码标准化 while ((range.low ^ range.high) < (1L << 31)) { uint32_t bit = range.low >> 31; putchar(bit + '0'); while (range.code > 0) { putchar('1' - bit); range.code--; } range.low = (range.low << 1) & MAX_CODE; range.high = ((range.high << 1) | 1) & MAX_CODE; } // 丢弃相同的二进制位 while (((range.low & 0x80000000) == (range.high & 0x80000000))) { uint32_t bit = range.low >> 31; putchar(bit + '0'); while (range.code > 0) { putchar('1' - bit); range.code--; } range.low = (range.low << 1) & MAX_CODE; range.high = ((range.high << 1) | 1) & MAX_CODE; } } // 输出最后的二进制编码 uint32_t bit = range.low >> 31; putchar(bit + '0'); while (range.code > 0) { putchar('1' - bit); range.code--; } } int main(void) { char data[] = "Hello, world! This is binary arithmetic coding."; encode(data, sizeof(data)); return 0; } ``` 这个程序会将输入的数据编码为一串二进制位,并输出到标准输出。具体的实现过程可以参考注释。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值