java中如何将字符串转换为二进制数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java中如何将字符串转换为二进制数相关的知识,希望对你有一定的参考价值。

我是想把一个字符串转换为二进制数,请问怎么弄呢?就你现在说的这个结果---转换后的数据是字符串的形式,那么如何在将这个数据用字节流的方式读取和存储呢?

java.lang.Integer这个API包中有进制转换的函数
public static String toBinaryString(int i)
public static String toHexString(int i)
public static String toOctalString(int i)
这3个函数都可以将十进制的整数转换成二、一六、八进制数
不过转换后的结果都是字符串的形式
参考技术A 方法一:开始,运行,输入cmd,再输入“systemInfo”,拉到上面看“系统类型”,X86的是32位机,64位的是X64(不过,系统是64位的,此处才显示64位)。如果你的系统是64位的,会在“OS?名称:?MicrosoftXP?Professional”一行后明确标示出“x64?Edition”,否则你的系统就是32位的。?
方法二:在开始>运行中输入“winver”,如果你的系统是64位的,同样会明确标示出“x64?Edition”。?
方法三:查看“控制面板”中的“系统属性”?
单击“开始”,然后单击“运行”。键入?sysdm.cpl,然后单击“确定”。单击“常规”选项卡。操作系统显示如下:?
对于?64?位版本的操作系统:“系统”下将显示?Windows?XP?Professional?x64?Edition?版本?<?Year>。?
对于?32?位版本的操作系统:“系统”下将显示?Windows?XP?Professional?版本?<?Year>。?注意<Year>?是一个表示年份的占位符。?方法?四:查看“系统信息”窗口?
单击“开始”,然后单击“运行”。键入?winmsd.exe,然后单击“确定”。?
当导航窗格中已选择“系统摘要”,找到“详细信息”窗格中“项目”下的“处理器”,然后记下该值。?
如果“处理器”对应的值以“x86”开头,表明该计算机运行的是?32?位版的?Windows?操作系统
如果“处理器”对应的值以“ia64”或“AMD64”开头,表明该计算机运行的是?64?位版的?Windows?操作系统?
右键打开我的电脑属性,没有“物理地址扩展”的是32位,有“物理地址扩展”的是64位如果这个方法无效,请尝试其他方法。
参考技术B public class Test01
public static void main(String[] args)

//比如我现在要转这个字符串
String str = "Hello World";

//先把他变为字符数组
char[] chs = str.toCharArray();

//然后通过integer中的toBinaryString方法来一个一个转

for (int i = 0; i < chs.length; i++)
System.out.print(Integer.toBinaryString(chs[i]));





1001000110010111011001101100110111110000010101111101111111001011011001100100
参考技术C java中字符串有提供方法获取字符串的byte数组

方法名getBytes,可以参考api
参考技术D "xxxxxxx".getBytes();

如何将一串二进制数转换为 C 中的字符(每个字符都必须有一个半字节)?

【中文标题】如何将一串二进制数转换为 C 中的字符(每个字符都必须有一个半字节)?【英文标题】:How can I convert a string of binary numbers into characters in C (each character has to have a nibble)? 【发布时间】:2021-09-01 15:11:03 【问题描述】:

我已经寻找了有用的函数,可用于将二进制数字字符串转换为 ASCII 字符字符串。我尝试使用这些 C++ 库转换字符串

#include <sstream>
#include <iostream> 

但我的编程环境(来自国家仪器的 CVI)没有它们。 如果有人有转换功能的例子,我会很高兴! 提前非常感谢。

【问题讨论】:

那些不是“库”。 用布尔代数(位掩码,移位)取出半字节,并使用它们来索引文字数组“0123456789ABCDEF”。 您提到的标题是针对 C++ 的,但您已经标记了您的问题 C。您使用的是哪种语言?此外,您需要更清楚“二进制数字串”的含义。 @ScottHunter 头文件?我以为它们被称为库文件。 【参考方案1】:

您的问题非常模糊,没有显示任何实际尝试,这使得您更难弄清楚您的意思。

大概是这样的:

#include <stdio.h>

void hexprint(char *out, const void *in, size_t length)

  const static char hexdigits[] = "0123456789abcdef";
  const unsigned char *bin = in;
  while (length--) 
    const unsigned char here = *bin++;
    *out++ = hexdigits[here >> 4];
    *out++ = hexdigits[here & 15];
  
  *out = '\0';


int main(void)

    char buf[32], data[] = 0xde, 0xad, 0xf0, 0x0d, 0xba, 0xbe ;
    hexprint(buf, data, sizeof data);
    printf("Got '%s'\n", buf);
    return 0;

这会打印出Got 'deadf00dbabe'。请注意,输出缓冲区默认为 Big Enough(TM),请小心。

【讨论】:

以上是关于java中如何将字符串转换为二进制数的主要内容,如果未能解决你的问题,请参考以下文章

如何将数组中的数字字符串转换为数字?

Javascript如何将十进制数转换为具有特定小数位数的字符串

高手请进!如何把整形数据转换为字符串(C语言)?

如何将一串二进制数转换为 C 中的字符(每个字符都必须有一个半字节)?

java中如何将Timestamp转换为毫秒数

如何用JAVA语言将十六进制数转换成二进制数,并输出