接口开发中 遇到的坑——Java byte与C# byte 数据转换问题

前提: 公司与其他公司进行接口对接 需要使用Byte[]数据流传输数据

原本想法如下:直接IO生成就ok了

  1. using System;
  2. using System.IO;
  3. using System.Text;
  4. namespace StreamReader
  5. {
  6. class Program
  7. {
  8. public static void Main(byte[] buffer)
  9. {
  10. System.IO.File.WriteAllBytes(@"D:\合同文件demo.pdf",buffer);
  11. }
  12. }
  13. }

但是  生成的pdf 打不开。。。。。

本着办法总比困难多的想法  以为IO生成可能是有问题,具体问题出现在哪没有考虑就直接上第二种方法

Stream stream = new MemoryStream(buffer);

BinaryReader br = new BinaryReader(stream);
FileStream fs = File.Create(@"D:\合同文件demo.pdf");
fs.Write(buffer, 0, buffer.Length);
br.Close();
fs.Close();

结果 也是一首凉凉送自己。。

思前想后也没想出结果 用自己的pdf生成byte[]数据流然后使用以上两种方法均能生成可以打开的pdf 妈蛋。。开始怀疑对方给的数据流是否正确了

向对方要了数据流的原始文件 自己生成了byte[]数据流 前后一对比发现JAVA的数据流里有-8,-9带有‘-’号的数据 c#生成的则没有。。

百度一波 发现JAVA的byte的范围在 [-128,127] 有符号位 在C#中byte的范围在 [0,255] 无符号位

问题发现了 本来是想直接用笨方法解决的 后来继续翻了几个文章发现C#中sbyte的范围和JAVA的范围是一致的  哈哈

结果就是 http请求回来的数据流用sbyte接收 使用以上两种方法均可生成可正常使用的pdf文件

原文地址:https://www.cnblogs.com/Abert33/p/8855043.html

时间: 2024-10-27 18:18:35

接口开发中 遇到的坑——Java byte与C# byte 数据转换问题的相关文章

iOS开发中遇到的坑 韩俊强的博客( 草稿)

从事iOS开发有些年月了,从最开始的磕磕绊绊,不知所措,到现在的遇到困难都能快速做出最佳方案处理,中间经历了不可或缺的痛苦.在项目开发中,本人有用印象笔记记录的习惯,所以很多重复出现的坑,很快迎刃而解,而不在同一个地方摔倒两次.为此,特意总结了一下开发中经常遇到的坑,有些可能和你形成共鸣,有些在你看来或许是小儿科,不喜勿喷. A valid provisioning profile for this executable was not found. 解决问题所在:发布证书无法运行在真机上!!!

【EasyUI总结】EasyUI开发中遇到的坑

普遍: 1.easyui在书写键值对的时候要注意是否要加引号,在需要加引号的地方不加则无法渲染: datagrid数据网格: 1.datagrid默认请求方式是post,如果要使用分页功能pagination,则需要把请求方式method设为get: 2.分页功能的pageSize必须是pageList数组中的其中一个数字,否则会出现url传递的rows=NaN错误: 3.columns因为有可能做成复合列头,所以它本身是一个数组对象,格式[[],[]...],并且属性field必须和返回的数据

支付宝(alipay)即时到账收款接口开发中的那些事儿

不会做,看看也可以会,要做好就还是需要多学习 国庆回来就一直没状态,看完<银河护卫队>,印象最深的竟然是只有两句台词的呆萌groot,昨天才休息一天,大耍大吃,今天还是把昨天的知识学习一下.前些天同事做一网站,需要用到支付宝接口,由于同事才学习PHP,我比他多学习了两天,我就帮忙参考了一下. demo就是教程 支付宝官方网站(https://b.alipay.com/order/techService.htm)下载了开发包,直接拷贝了PHP版本作为我们需要的版本,里面直接就是一个demo.要怎

记录在一次前后端分离的项目开发中遇到的坑

问题如下图: 在一次实际的项目开发中,我负责前端开发,使用的是vue+axios,后台使用的是php,由于我们的开发环境处于不同的域名和端口下, 所以出现了跨域问题,当然php服务端 可以直接解决这个问题,但是后端设置之后,前端每次都会先发出options请求,然后再post请求, 这说白了,就是每个接口请求两次.我们来分析下原因: 出于安全考虑,并不是所有域名访问后端服务都可以.其实在正式跨域之前,浏览器会根据需要发起一次预检(也就是option请求),用来让服务端返回允许的方法(如get.p

小程序开发中的一些坑和技巧

前言 最近公司要开发一款电商小程序,匆忙看了一遍文档就开始干活了.整体开发体验个人感觉不太好,特别是如果之前习惯了Vue开发,突然去开发小程序,感觉很鸡肋.以下是我在开发中遇到的一些问题以及解决方法的总结,仅供参考 引入iconfont 在小程序中引入字体图标要比web麻烦一些,简单说需要三步: 下载iconfont,把iconfont.css复制到iconfont.wxss,在app.wxss中引入 查看iconfont在unicode模式下的在线链接,替换iconfont.wxss中的链接为

【Java】接口开发中关于接受和发送json的相关范例

接受json package com.suneee.scn.wms.web.rocketmq; import java.util.List; import net.sf.json.JSONArray; import net.sf.json.JSONObject; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired

基于Vue公众号开发中的哪些坑 (严重鄙视ios,遇到的坑基本都是在ios中)

一.ios白屏问题ios端基于vue开发的H5无法正常显示,白屏问题1.代码问题确定方法:在ie/edge浏览器中打开,看是否正常显示,如果仍然白屏,可以确定问题解决方法:1.代码中是否使用es6,如果使用,确定使用es6转es5,(npm install babel-polyfillnpm install es6-promise)2.参考 https://www.cnblogs.com/love314159/articles/9355785.html3.以上方法都不行的话,查看源码是在main

那些SCOM 管理包开发中遇到的坑2&ndash;Multiple Property Bags

前面一篇文章说到为了省事,而且在Authoring guide中的workflow composite 里就说,为了让效率更高,最好让脚本支持Cookdown.然后我的脚本就返回多个Property bags. 为了支持cookdown,我设计了一个自定义datasource,定义如下,简单的来说就是定期执行前面文章中说到的powershell 脚本,这个脚本输出多个Property bags ,为了复用module,我加了一个conditionDetection,使用正则表达式对propert

TFS扩展开发中遇到的坑

本码农最近开发一个VS扩展,其中有些功能涉及到文件的签出.我们公司用的是TFS,遇到了一些奇特的现象,将解决过程记录如下. 一.明明在线的连接却Offline属性等于True public static Workspace GetWorkspace(string slnDir) { var projectCollections = new List<RegisteredProjectCollection>((RegisteredTfsConnections.GetProjectCollecti