求助:JAVA二进制数据与字符串转换问题

从文件中按照GBK编码方式读取二进制流,将二进制数据封装到XML数据包中,经过
网络传输到另一端后,再将二进制数据按照GBK编码写回到某一文件中,二进制数据
能够获取到,但是经过字符串处理后,到另一端如何还原回去?大神,求破!

2个回答

你所谓的按照GBK编码方式读取,关键问题在于你的文件本身是不是按照GBK来写的?如果本身就是GBK的文件,你读取后封装为XML,传输到另一端后,直接写入文件就可以了,不需要还原。
但是如果你原来的文件不是GBK方式写的,那你按GBK读取的话可能会产生一些数据遗失、错误等情况,那样就没有办法还原了。
建议你不要用什么方式,直接按字节流读取,传输后也不需要什么还原,直接按字节流写回文件。

DoubleZ1216
张三疯1dfd 恩恩,base64位直接处理了
大约 5 年之前 回复
gamefinity
知常曰明 回复DoubleZ1216: 当然可以啦,你读取了字节流之后,可以自己编码,比如base64,然后放到XML里
大约 5 年之前 回复
DoubleZ1216
张三疯1dfd XML中还有其他元素,有一个content标签存放文件内容[图片、视频、文档等]
大约 5 年之前 回复
DoubleZ1216
张三疯1dfd 字节流能够直接被封装到XML中,然后从XML中直接读取写回到文件中?
大约 5 年之前 回复

写入到文件用缓冲流bufferwriter和filewriter,读取用filereader和bufferreader

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
Python+OpenCV计算机视觉

Python+OpenCV计算机视觉

如何将二进制字符串转换为byte[]?

[code="java"]byte[] b = new byte[fis.available()]; StringBuilder str = new StringBuilder(); fis.read(b); for(byte bs:b){ str.append(Integer.toBinaryString(bs));//转换为二进制 } fis.close();[/code] 我通过这种方式将一个byte[]转换为二进制的字符串。里面全是0和1字符。现怎么将这种二进制字符串转换为byte[]数组?我知道有其它将byte[]和字符串之间互相转换的方法。但我现在只求这种二进制字符串的转换方法。拜托各位了。。

java如何把二进制内容(字符串)保存成文件

二进制内容由xml中提交过来的,需要把它转成文件保存到指定目录中。 二进制内容:FFD8FFE000104A46494600010100000100010000FFDB0043000503040404030504040405050506070C08070707070F.....

asp将字符串内容转换为2进制数据流,要实现字符串到2进制数据流的转换

asp将字符串内容转换为2进制数据流,要实现字符串到2进制数据流的转换,有需要操作字符串的2进制数据流,怎么转?

Go-将代表二进制数的字符串转换为int

<div class="post-text" itemprop="text"> <p>I wrote a stupid solution for this, any better recipe? As you can see lots of useless conversions there.</p> <pre><code>package main import ( "fmt" "strconv" "math" ) func conv(str string) int { l := len(str) result := 0.0 for i,n := range str { number,_ := strconv.Atof64(string(n)) result += math.Exp2(float64(l-i-1))*number } return int(result) } func main() { fmt.Println(conv("1001")) } </code></pre> </div>

如何将图片二进制--字符串--二进制流?

需求是这样的:我要把一个图片用webservice发布出去,流程 图片---》二进制---》字符串---》调用webserivce接口---》字符串---》二进制---》图片。不能直接发布二进制接口,因为客户端不支持。 现在遇到的问题是二进制 转字符串 再转成二进制后就和原来的不一样了。 我写的代码[code="java"] File file=new File("d:\\test.jpg"); InputStream input =new FileInputStream(file); byte[] temp = new byte[input.available()]; tem.read(temp); tem.close(); String outstr = new String(temp); byte[] outbyte = outstr.getBytes(); File outfile=new File("d:\\testout.jpg"); FileOutputStream fos = new FileOutputStream(outfile); fos.write(outbyte); fos.close(); [/code] 这样转化后[code="java"] String outstr = new String(temp); byte[] outbyte = outstr.getBytes(); [/code] temp 和 outbyte就不一样了,试了各种编码还是不行 请问怎么解决 ps:如果是字符串来回转都没事,图片不行

怎么实现 将 二进制与字符串的互相转换,C,C++,Java实现都可以。

例如:输入 110001000010001 111001000110001 101110000001111 1001110001111100 输出 我叫小明 输入 我叫小明 输出 110001000010001 111001000110001 101110000001111 100111000111110

JAVA怎么转化8进制字符串

例如我得到的字符串为:\xxx\xxx\xxx\xxx\xxx\xxx\xxx\xxx\xxx\xxx\xxx\xxx\xxx\xxx

System.Data.SqlClient.SqlException: 将截断字符串或二进制数据

我的数据库插入字符串写成如下,在ASP.NET中执行后,显示异常详细信息: System.Data.SqlClient.SqlException: 将截断字符串或二进制数据。 语句已终止。 ```string insertAdminInfo = string.Format("insert into Administrator (admin_ID,admin_name,admin_sex,admin_position,admin_psw,admin_tel,admin_office) values ({0},'{1}','{2}','{3}','{4}','{5}','{6}')",int.Parse(this.txbadminIDAdd.Text),this.txbadminNameAdd.Text,this.drladminSex.SelectedValue,this.txbadminPos.Text,password,this.txbadminTel,this.txbadminOff.Text); ``` 除了admin_sex 在数据库中是nvarchar(1),其它的字符串都是nvarchar(32),输入的数据都只有一个字符,保证没有超过范围,我感觉还是admin_sex这里出了问题,不知道怎么回事,我的这个插入字符串写的不对吗 在数据库中直接写insert into Administrator (admin_ID,admin_name,admin_sex,admin_position,admin_psw,admin_tel,admin_office) values (10003,'张三','男','教授','12','1','99')是可以的,但是在C#中写了如上的操作字符串后就不行

在Go中将字符串转换为二进制

<div class="post-text" itemprop="text"> <p>How do you convert a string to its binary representation in Go?</p> <p>Example:</p> <blockquote> <p>Input: "A"</p> <p>Output: "01000001"</p> </blockquote> <p>In my testing, <code>fmt.Sprintf("%b", 75)</code> only works on integers.</p> </div>

java PDF 转二进制字符串

哪路大神可以给个PDF转二进制字符串的例子,不要网上随便找的,谢谢

c++下16进制转到文本字符串

我将图片文件用二进制读取出来存入string中,然后转成了16进制的字符串,方法如下: unsigned char c; char buf[3]; std::string result = ""; std::ifstream fread(file,std::ios::binary); while(fread.read((char*)(&c), sizeof(c))) { sprintf(buf, "%X", c); result += buf; } std::cout << result << std::endl; fread.close(); 我想问下,我应该怎么把它转回string然后写回图片文件啊?

将截断字符串或二进制数据问题,Java,sql

我开的长度足够大了,可是还是报错 ``` ![图片说明](https://img-ask.csdn.net/upload/201602/17/1455723342_499331.png) ``` public void actionPerformed(ActionEvent e) { if(e.getSource()==jb1){ Connection ct=null; Statement stm=null; PreparedStatement ps=null; ResultSet rs=null; //Statement stmt=null; try { //加载驱动 Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); //创建连接对象 String url="jdbc:sqlserver://localhost:1433;databaseName=master"; //注册驱动程序,打开连接 ct=DriverManager.getConnection(url,"sa","ksj123456."); //预编译语句对象 String sql="insert into stu values(?,?,?,?,?,?)"; ps=ct.prepareStatement(sql); //参数赋值 ps.setString(1, jtf1.getText()); ps.setString(2, jtf1.getText()); ps.setString(3, jtf1.getText()); ps.setString(4, jtf1.getText()); ps.setString(5, jtf1.getText()); ps.setString(6, jtf6.getText()); //执行操作 ps.executeUpdate(); this.dispose(); ``` ```

java 十六进制 表示的字符串 怎么使他低字节在前,高字节在后

比如说 有个16进制 表示的字符串String temp=" 94 01 00 00 60 10......" 怎么使他低字节在前,高字节在后 求代码

JS十六进制字符串转字符串问题

## 我在做一个服务器用MQTT协议与DTU终端通讯,发送modbus指令,DTU接收到指令后下发给plc,来控制灯泡的问题。 现在要发送的modbus请求帧是“01 05 00 02 FF 00 2D FA”,这是一段十六进制字符串。 我通过这样一个函数hexToString = function (hex) { var hex = hex.toString(); var str = ''; for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16)); return str; }; 将这段modbus请求帧转成字符串,然后下发给DTU. 然后问题来了,用串口软件监听DTU接收的消息内容,翻译成十六进制之后 这段请求帧变成了“01 05 00 02 C3 BF 00 2D C3 BA”![图片说明](https://img-ask.csdn.net/upload/201906/14/1560501772_690458.png) 这是什么原因呢?是hexToString函数不对吗?我在网上也找了很多十六进制字符串转字符串的函数代码,跟我这个差不多,我也都调试过,都没有解决这个问题。这究竟是什么问题? 求大神!!!

在Golang中将二进制值作为字符串转换为uint32

<div class="post-text" itemprop="text"> <p>Hello i am trying to convert 00000000000000000000000000001011 to uint32 in golang using </p> <pre><code>var v = "00000000000000000000000000001011" fmt.Printf("%T ", v) c := []byte(v) u := binary.LittleEndian.Uint32(c) </code></pre> <p>However it is not working.</p> </div>

如何在PHP中将八进制值转换为字符串?

<div class="post-text" itemprop="text"> <p>One of my webs service is responding value in octal(010), I want to use this value as key in an array. </p> <pre><code>$key = 010; $a[$key] = 'test'; print_r($a); </code></pre> <p>Result :</p> <pre><code>Array ( [8] =&gt; test ) </code></pre> <p>Expected :</p> <pre><code>Array ( [010] =&gt; test ) </code></pre> <p>PHP is converting 010 value to 9 even I do typecasting, I tried <code>(string) $key</code> and <code>sprintf('%s', $key)</code> but no luck.</p> <p>Is there anyway do we have to convert octal to string without change the value?</p> </div>

JAVA 将128位二进制串转换为整型,在进行位运算,计算汉明距离

JAVA,现有两个128位的二进制串,我要计算它们之间的汉明距离,但在Java中位运算好像都需要事先转换为整型。但是128位的二进制数也太大,int并不能满足要求,用长整型好像也不太行。求大神指导。

将二进制数据从字节数组转换为字符串然后返回golang是否安全?

<div class="post-text" itemprop="text"> <p>Maybe a stupid question, but if I have some arbitrary binary data, can I cast it to string and back to byte array without corrupting it?</p> <p>Is <code>[]byte(string(byte_array))</code> always the same as <code>byte_array</code>?</p> </div>

将字符串转换为二进制的字符串表示的有效方法

<div class="post-text" itemprop="text"> <p>I'm searching how to convert a string to a string representation in binary with best performance.</p> <p>So I started with something similar to the following:</p> <pre><code>func binConvertOrig(s string) string { var buf bytes.Buffer for i := 0; i &lt; len(s); i++ { fmt.Fprintf(&amp;buf, "%08b", s[i]) } return buf.String() } s := "Test" log.Printf("%s =&gt; binConvertOrig =&gt; %s", s, binConvertOrig(s)) </code></pre> <p>But it seems that <code>fmt.Fprintf</code> &amp; <code>bytes.Buffer</code> are not very efficient.</p> <p>Is there a better way to do this?</p> <p>Thanks</p> </div>

2019 Python开发者日-培训

2019 Python开发者日-培训

150讲轻松搞定Python网络爬虫

150讲轻松搞定Python网络爬虫

设计模式(JAVA语言实现)--20种设计模式附带源码

设计模式(JAVA语言实现)--20种设计模式附带源码

YOLOv3目标检测实战:训练自己的数据集

YOLOv3目标检测实战:训练自己的数据集

java后台+微信小程序 实现完整的点餐系统

java后台+微信小程序 实现完整的点餐系统

三个项目玩转深度学习(附1G源码)

三个项目玩转深度学习(附1G源码)

初级玩转Linux+Ubuntu(嵌入式开发基础课程)

初级玩转Linux+Ubuntu(嵌入式开发基础课程)

2019 AI开发者大会

2019 AI开发者大会

玩转Linux:常用命令实例指南

玩转Linux:常用命令实例指南

一学即懂的计算机视觉(第一季)

一学即懂的计算机视觉(第一季)

4小时玩转微信小程序——基础入门与微信支付实战

4小时玩转微信小程序——基础入门与微信支付实战

Git 实用技巧

Git 实用技巧

Python数据清洗实战入门

Python数据清洗实战入门

使用TensorFlow+keras快速构建图像分类模型

使用TensorFlow+keras快速构建图像分类模型

实用主义学Python(小白也容易上手的Python实用案例)

实用主义学Python(小白也容易上手的Python实用案例)

程序员的算法通关课:知己知彼(第一季)

程序员的算法通关课:知己知彼(第一季)

MySQL数据库从入门到实战应用

MySQL数据库从入门到实战应用

机器学习初学者必会的案例精讲

机器学习初学者必会的案例精讲

手把手实现Java图书管理系统(附源码)

手把手实现Java图书管理系统(附源码)

极简JAVA学习营第四期(报名以后加助教微信:eduxy-1)

极简JAVA学习营第四期(报名以后加助教微信:eduxy-1)

.net core快速开发框架

.net core快速开发框架

玩转Python-Python3基础入门

玩转Python-Python3基础入门

Python数据挖掘简易入门

Python数据挖掘简易入门

微信公众平台开发入门

微信公众平台开发入门

程序员的兼职技能课

程序员的兼职技能课

Windows版YOLOv4目标检测实战:训练自己的数据集

Windows版YOLOv4目标检测实战:训练自己的数据集

HoloLens2开发入门教程

HoloLens2开发入门教程

微信小程序开发实战

微信小程序开发实战

Java8零基础入门视频教程

Java8零基础入门视频教程

相关热词 c# 开发接口 c# 中方法上面的限制 c# java 时间戳 c#单元测试入门 c# 数组转化成文本 c#实体类主外键关系设置 c# 子函数 局部 c#窗口位置设置 c# list 查询 c# 事件 执行顺序
立即提问