版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
WorkingwithC++DatainJavaPresentedby:
JessicaWinbladThisPresentation©2021JessicaWinbladOutlineWorkingwithC++DLLsJavaNativeInterface(JNI)I/OwithFiles&StreamsByte/BitOrderDataTypetranslationRealWorldExamplePoweringtest-equipmentfor12.5secondsProjectRequirementsSendvoltageoutaparallelportforaspecifiedtimeinseconds,toahalf-secondaccuracyRunonaWindows2000orXPmachineIntegratewithatest-suitealreadywritteninJavaEngineeringChallengeWithWindows98thiswouldhavebeeneasyWindows2000provideslesstransparentaccesstothemachine’shardwareOnlyhardwaredevicedriverscandirectlyaccessthehardwareYoucan’twritedevicedriversinJavaSolutionUseadevicedriverDLLthatallowsdirectprogrammingoftheparallelportUseJNItoaccessthedevicedriverJNI(JavaNativeInterface)classioPort{
publicnativevoidOut32(
shortPortAddress,shortdata);
static{System.loadLibrary("jnpout32pkg");}
}
…
ioPortpp=newioPort();
pp.Out32(0x378,currentVal);AnotherRealWorldExampleByteandBitOrderMatterBigEndian(“NetworkByteOrder〞)Eg:Motorolla68kprocessorLittleEndianEg:x86PCMayneedtotestfor
“endianness〞Javahasclassestohelpwith
correctingbyteorder
(eg:)Asourcevalueof0xFFFE=
1111111111111110
Couldbereadas:11111110111111111111111101111111etc.ConvertingDataTypesAppliestobothstreamsandfilesIfyouhaveadoubleinC++shouldyouuseareadDouble()methodofyourjavastream/filereadertoreadit?(No)JavaandC++donotalwayshavethesamenamesforequivalentprimitivetypes.Sometypesdon’tmapnicely.Size1byte2bytes4bytes8bytes16bytes8bits16bits32bits64bits128bitsC++char/bool
float(long)double
Javabooleanchar
floatdoubleSize1byte2bytes4bytes8bytes16bytes8bits16bits32bits64bits128bitsC++byteshortint/longlonglong__int128JavabyteshortintlongBigIntegerInternalSizingofDataTypes*C++sizesareOS/compilerdependent(Win32shown)Signed/UnsignedTypesJavaensuresconsistencybyalwaysusingsignedtypesC++supportsbothsigned&unsignedtypesUnsignedByteSignedByteUnsignedShortSignedShortSize1byte1byte2bytes2bytesValueRange0to255-128to1270to65,535-32,768to32,767PrincipleofConversionToreadinunsignedvaluesfromC++theresultingtypeinJavaneedstobelargerAlso,someextraconversionneedstobedonetofixincorrectsignextension.NaïveUnsignedConversionshortvalue=(short)in.readByte();Question:Ifashortcanholdfrom0to65,535whydoesn’tthisworkforvalues128-255?Answer:SignExtensionappliedwhencastingHowDoesSignExtensionWork?unsignedbyte:129=0x81=100000012Thesignbitisextended:11111111
100000012Intwoscompliment,ifthesignbit=1,thenumberispresumednegative.TwosComplimentRawBits
Signed
Unsigned01111111=12712700000010=2200000001=1100000000=0011111111=−125511111110=−225410000001=−12712910000000=−128128Solution:BitMaskingbyteb=in.readByte();//readsassignedshortbitmask=(short)0xff;shortvalue=(short)(b&bitmask);
111111111xxxxxxxnegative&00000000111111110xFF
000000001xxxxxxxpositiveBeCarefulwithUnsignedIntslonga=(long)(in.readInt()&0xffffffff);doesn’twork!Reason:0xffffffffisanegativevalue.Solution:longa=(long)(in.readInt()&0xffffffffL);DealingwithDecimalsGoingfromaC++doubletoaJavafloatiseasybecausebothare8-byteIEEE754values.GoingfromaC++floattoJavaisharderbecauseJavadoesnothavea4-bytefloattypeButJavagivestoolstomaketheconversioneasyinta=in.readInt();
floatb=FBitsToFloat(a);out.writeInt(Float.floatBitsToInt(floatValue));OtherPitfalls&IssuesIfyourC++codeusedbit-fields,youwillhavetodobitmaskingandshiftingtoreadouttheindividualfiel
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 苏教版三年级科学下册教案全集
- 苏教版科学二年级下册教案合集
- 记账实操-手机电池加工厂的账务处理分录
- 《说明文的特点》知识传递教案
- 《好的故事》美好愿景教案
- 2024智能旅客检查系统
- 庆祝新中国成立75周年(学习1949-2024新中国史)
- 2025高考物理步步高同步练习选修3练透答案精析
- 保育员培训记录-关于餐前餐后的保育工作
- 2021-2022学年广东省广州市花都区六年级(上)期末英语试卷
- 八上语文第六单元三说
- 2024年综合病例站点式竞赛理论试题
- DB13-T1773-2013水生植物建植及养护管理技术规范
- 教师结构化面试题目及解答汇总
- 第1课《自主选择课余生活》第二课时(课件)
- 生态文明教育班会方案
- 新生儿断脐下载课件
- 劳动主题作文素材 高中语文统编版必修上册第二单元
- 2024西藏事业单位遴选真押题技巧
- 污水处理站员工绩效考核方案
- 化学实验自制肥皂
评论
0/150
提交评论