@@ -379,217 +379,6 @@ class BinaryRead(Builtin):
379379 >> BinaryRead[strm, {"Character8", "Character8", "Character8"}]
380380 = {a, b, c}
381381 >> DeleteFile[Close[strm]];
382-
383- ## Write as Bytes then Read
384- #> WbR[bytes_, form_] := Module[{stream, res}, stream = OpenWrite[BinaryFormat -> True]; BinaryWrite[stream, bytes]; stream = OpenRead[Close[stream], BinaryFormat -> True]; res = BinaryRead[stream, form]; DeleteFile[Close[stream]]; res]
385-
386- ## Byte
387- #> WbR[{149, 2, 177, 132}, {"Byte", "Byte", "Byte", "Byte"}]
388- = {149, 2, 177, 132}
389- #> (# == WbR[#, Table["Byte", {50}]]) & [RandomInteger[{0, 255}, 50]]
390- = True
391-
392- ## Character8
393- #> WbR[{97, 98, 99}, {"Character8", "Character8", "Character8"}]
394- = {a, b, c}
395- #> WbR[{34, 60, 39}, {"Character8", "Character8", "Character8"}]
396- = {", <, '}
397-
398- ## Character16
399- #> WbR[{97, 0, 98, 0, 99, 0}, {"Character16", "Character16", "Character16"}]
400- = {a, b, c}
401- #> ToCharacterCode[WbR[{50, 154, 182, 236}, {"Character16", "Character16"}]]
402- = {{39474}, {60598}}
403- ## #> WbR[ {91, 146, 206, 54}, {"Character16", "Character16"}]
404- ## = {\\ :925b, \\ :36ce}
405-
406- ## Complex64
407- #> WbR[{80, 201, 77, 239, 201, 177, 76, 79}, "Complex64"] // InputForm
408- = -6.368779889243691*^28 + 3.434203392*^9*I
409- #> % // Precision
410- = MachinePrecision
411- #> WbR[{158, 2, 185, 232, 18, 237, 0, 102}, "Complex64"] // InputForm
412- = -6.989488623351118*^24 + 1.522090212973691*^23*I
413- #> WbR[{195, 142, 38, 160, 238, 252, 85, 188}, "Complex64"] // InputForm
414- = -1.4107982814807285*^-19 - 0.013060791417956352*I
415-
416- ## Complex128
417- #> WbR[{15,114,1,163,234,98,40,15,214,127,116,15,48,57,208,180},"Complex128"] // InputForm
418- = 1.1983977035653814*^-235 - 2.6465639149433955*^-54*I
419- #> WbR[{148,119,12,126,47,94,220,91,42,69,29,68,147,11,62,233},"Complex128"] // InputForm
420- = 3.2217026714156333*^134 - 8.98364297498066*^198*I
421- #> % // Precision
422- = MachinePrecision
423- #> WbR[{15,42,80,125,157,4,38,97, 0,0,0,0,0,0,240,255}, "Complex128"]
424- = -I Infinity
425- #> WbR[{15,42,80,125,157,4,38,97, 0,0,0,0,0,0,240,127}, "Complex128"]
426- = I Infinity
427- #> WbR[{15,42,80,125,157,4,38,97, 1,0,0,0,0,0,240,255}, "Complex128"]
428- = Indeterminate
429- #> WbR[{0,0,0,0,0,0,240,127, 15,42,80,125,157,4,38,97}, "Complex128"]
430- = Infinity
431- #> WbR[{0,0,0,0,0,0,240,255, 15,42,80,125,157,4,38,97}, "Complex128"]
432- = -Infinity
433- #> WbR[{1,0,0,0,0,0,240,255, 15,42,80,125,157,4,38,97}, "Complex128"]
434- = Indeterminate
435- #> WbR[{0,0,0,0,0,0,240,127, 0,0,0,0,0,0,240,127}, "Complex128"]
436- = Indeterminate
437- #> WbR[{0,0,0,0,0,0,240,127, 0,0,0,0,0,0,240,255}, "Complex128"]
438- = Indeterminate
439-
440- ## Complex256
441- ## TODO
442-
443- ## Integer8
444- #> WbR[{149, 2, 177, 132}, {"Integer8", "Integer8", "Integer8", "Integer8"}]
445- = {-107, 2, -79, -124}
446- #> WbR[{127, 128, 0, 255}, {"Integer8", "Integer8", "Integer8", "Integer8"}]
447- = {127, -128, 0, -1}
448-
449- ## Integer16
450- #> WbR[{149, 2, 177, 132, 112, 24}, {"Integer16", "Integer16", "Integer16"}]
451- = {661, -31567, 6256}
452- #> WbR[{0, 0, 255, 0, 255, 255, 128, 127, 128, 128}, Table["Integer16", {5}]]
453- = {0, 255, -1, 32640, -32640}
454-
455- ## Integer24
456- #> WbR[{152, 173, 160, 188, 207, 154}, {"Integer24", "Integer24"}]
457- = {-6247016, -6631492}
458- #> WbR[{145, 173, 231, 49, 90, 30}, {"Integer24", "Integer24"}]
459- = {-1593967, 1989169}
460-
461- ## Integer32
462- #> WbR[{209, 99, 23, 218, 143, 187, 236, 241}, {"Integer32", "Integer32"}]
463- = {-636001327, -236143729}
464- #> WbR[{15, 31, 173, 120, 245, 100, 18, 188}, {"Integer32", "Integer32"}]
465- = {2024611599, -1139645195}
466-
467- ## Integer64
468- #> WbR[{211, 18, 152, 2, 235, 102, 82, 16}, "Integer64"]
469- = 1176115612243989203
470- #> WbR[{37, 217, 208, 88, 14, 241, 170, 137}, "Integer64"]
471- = -8526737900550694619
472-
473- ## Integer128
474- #> WbR[{140,32,24,199,10,169,248,117,123,184,75,76,34,206,49,105}, "Integer128"]
475- = 139827542997232652313568968616424513676
476- #> WbR[{101,57,184,108,43,214,186,120,153,51,132,225,56,165,209,77}, "Integer128"]
477- = 103439096823027953602112616165136677221
478- #> WbR[{113,100,125,144,211,83,140,24,206,11,198,118,222,152,23,219}, "Integer128"]
479- = -49058912464625098822365387707690163087
480-
481- ## Real32
482- #> WbR[{81, 72, 250, 79, 52, 227, 104, 90}, {"Real32", "Real32"}] // InputForm
483- = {8.398086656*^9, 1.6388001768669184*^16}
484- #> WbR[{251, 22, 221, 117, 165, 245, 18, 75}, {"Real32", "Real32"}] // InputForm
485- = {5.605291528399748*^32, 9.631141*^6}
486- #> WbR[{126, 82, 143, 43}, "Real32"] // InputForm
487- = 1.0183657302847982*^-12
488- #> % // Precision
489- = MachinePrecision
490- #> WbR[{0, 0, 128, 127}, "Real32"]
491- = Infinity
492- #> WbR[{0, 0, 128, 255}, "Real32"]
493- = -Infinity
494- #> WbR[{1, 0, 128, 255}, "Real32"]
495- = Indeterminate
496- #> WbR[{1, 0, 128, 127}, "Real32"]
497- = Indeterminate
498-
499- ## Real64
500- #> WbR[{45, 243, 20, 87, 129, 185, 53, 239}, "Real64"] // InputForm
501- = -5.146466194262116*^227
502- #> WbR[{192, 60, 162, 67, 122, 71, 74, 196}, "Real64"] // InputForm
503- = -9.695316988087658*^20
504- #> WbR[{15, 42, 80, 125, 157, 4, 38, 97}, "Real64"] // InputForm
505- = 9.67355569763742*^159
506- #> % // Precision
507- = MachinePrecision
508- #> WbR[{0, 0, 0, 0, 0, 0, 240, 127}, "Real64"]
509- = Infinity
510- #> WbR[{0, 0, 0, 0, 0, 0, 240, 255}, "Real64"]
511- = -Infinity
512- #> WbR[{1, 0, 0, 0, 0, 0, 240, 127}, "Real64"]
513- = Indeterminate
514- #> WbR[{1, 0, 0, 0, 0, 0, 240, 255}, "Real64"]
515- = Indeterminate
516-
517- ## Real128
518- ## 0x0000
519- #> WbR[{0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0}, "Real128"]
520- = 0.×10^-4965
521- #> WbR[{0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,128}, "Real128"]
522- = 0.×10^-4965
523- ## 0x0001 - 0x7FFE
524- #> WbR[{0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,255,63}, "Real128"]
525- = 1.00000000000000000000000000000000
526- #> WbR[{0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,255,191}, "Real128"]
527- = -1.00000000000000000000000000000000
528- #> WbR[{135, 62, 233, 137, 22, 208, 233, 210, 133, 82, 251, 92, 220, 216, 255, 63}, "Real128"]
529- = 1.84711247573661489653389674493896
530- #> WbR[{135, 62, 233, 137, 22, 208, 233, 210, 133, 82, 251, 92, 220, 216, 207, 72}, "Real128"]
531- = 2.45563355727491021879689747166252×10^679
532- #> WbR[{74, 95, 30, 234, 116, 130, 1, 84, 20, 133, 245, 221, 113, 110, 219, 212}, "Real128"]
533- = -4.52840681592341879518366539335138×10^1607
534- #> % // Precision
535- = 33.
536- ## 0x7FFF
537- #> WbR[{0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,255,127}, "Real128"]
538- = Infinity
539- #> WbR[{0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,255,255}, "Real128"]
540- = -Infinity
541- #> WbR[{1,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,255,127}, "Real128"]
542- = Indeterminate
543- #> WbR[{1,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,255,255}, "Real128"]
544- = Indeterminate
545-
546- ## TerminatedString
547- #> WbR[{97, 98, 99, 0}, "TerminatedString"]
548- = abc
549- #> WbR[{49, 50, 51, 0, 52, 53, 54, 0, 55, 56, 57}, Table["TerminatedString", {3}]]
550- = {123, 456, EndOfFile}
551- #> WbR[{0}, "TerminatedString"] // InputForm
552- = ""
553-
554- ## UnsignedInteger8
555- #> WbR[{96, 94, 141, 162, 141}, Table["UnsignedInteger8", {5}]]
556- = {96, 94, 141, 162, 141}
557- #> (#==WbR[#,Table["UnsignedInteger8",{50}]])&[RandomInteger[{0, 255}, 50]]
558- = True
559-
560- ## UnsignedInteger16
561- #> WbR[{54, 71, 106, 185, 147, 38, 5, 231}, Table["UnsignedInteger16", {4}]]
562- = {18230, 47466, 9875, 59141}
563- #> WbR[{0, 0, 128, 128, 255, 255}, Table["UnsignedInteger16", {3}]]
564- = {0, 32896, 65535}
565-
566- ## UnsignedInteger24
567- #> WbR[{78, 35, 226, 225, 84, 236}, Table["UnsignedInteger24", {2}]]
568- = {14820174, 15488225}
569- #> WbR[{165, 2, 82, 239, 88, 59}, Table["UnsignedInteger24", {2}]]
570- = {5374629, 3889391}
571-
572- ## UnsignedInteger32
573- #> WbR[{213,143,98,112,141,183,203,247}, Table["UnsignedInteger32", {2}]]
574- = {1885507541, 4157323149}
575- #> WbR[{148,135,230,22,136,141,234,99}, Table["UnsignedInteger32", {2}]]
576- = {384206740, 1676316040}
577-
578- ## UnsignedInteger64
579- #> WbR[{95, 5, 33, 229, 29, 62, 63, 98}, "UnsignedInteger64"]
580- = 7079445437368829279
581- #> WbR[{134, 9, 161, 91, 93, 195, 173, 74}, "UnsignedInteger64"]
582- = 5381171935514265990
583-
584- ## UnsignedInteger128
585- #> WbR[{108,78,217,150,88,126,152,101,231,134,176,140,118,81,183,220}, "UnsignedInteger128"]
586- = 293382001665435747348222619884289871468
587- #> WbR[{53,83,116,79,81,100,60,126,202,52,241,48,5,113,92,190}, "UnsignedInteger128"]
588- = 253033302833692126095975097811212718901
589-
590- ## EndOfFile
591- #> WbR[{148}, {"Integer32", "Integer32","Integer32"}]
592- = {EndOfFile, EndOfFile, EndOfFile}
593382 """
594383
595384 summary_text = "read an object of the specified type"
@@ -725,168 +514,6 @@ class BinaryWrite(Builtin):
725514 >> BinaryWrite[strm, {97, 98, 99}, {"Byte", "Byte", "Byte"}]
726515 = OutputStream[...]
727516 >> DeleteFile[Close[%]];
728-
729- ## Write then Read as Bytes
730- #> WRb[bytes_, form_] := Module[{stream, res={}, byte}, stream = OpenWrite[BinaryFormat -> True]; BinaryWrite[stream, bytes, form]; stream = OpenRead[Close[stream], BinaryFormat -> True]; While[Not[SameQ[byte = BinaryRead[stream], EndOfFile]], res = Join[res, {byte}];]; DeleteFile[Close[stream]]; res]
731-
732- ## Byte
733- #> WRb[{149, 2, 177, 132}, {"Byte", "Byte", "Byte", "Byte"}]
734- = {149, 2, 177, 132}
735- #> WRb[{149, 2, 177, 132}, {"Byte", "Byte", "Byte", "Byte"}]
736- = {149, 2, 177, 132}
737- #> (# == WRb[#, Table["Byte", {50}]]) & [RandomInteger[{0, 255}, 50]]
738- = True
739-
740- ## Character8
741- #> WRb[{"a", "b", "c"}, {"Character8", "Character8", "Character8"}]
742- = {97, 98, 99}
743- #> WRb[{34, 60, 39}, {"Character8", "Character8", "Character8"}]
744- = {51, 52, 54, 48, 51, 57}
745- #> WRb[{"ab", "c", "d"}, {"Character8", "Character8", "Character8", "Character8"}]
746- = {97, 98, 99, 100}
747-
748- ## Character16
749- ## TODO
750-
751- ## Complex64
752- #> WRb[-6.36877988924*^28 + 3.434203392*^9 I, "Complex64"]
753- = {80, 201, 77, 239, 201, 177, 76, 79}
754- #> WRb[-6.98948862335*^24 + 1.52209021297*^23 I, "Complex64"]
755- = {158, 2, 185, 232, 18, 237, 0, 102}
756- #> WRb[-1.41079828148*^-19 - 0.013060791418 I, "Complex64"]
757- = {195, 142, 38, 160, 238, 252, 85, 188}
758- #> WRb[{5, -2054}, "Complex64"]
759- = {0, 0, 160, 64, 0, 0, 0, 0, 0, 96, 0, 197, 0, 0, 0, 0}
760- #> WRb[Infinity, "Complex64"]
761- = {0, 0, 128, 127, 0, 0, 0, 0}
762- #> WRb[-Infinity, "Complex64"]
763- = {0, 0, 128, 255, 0, 0, 0, 0}
764- #> WRb[DirectedInfinity[1 + I], "Complex64"]
765- = {0, 0, 128, 127, 0, 0, 128, 127}
766- #> WRb[DirectedInfinity[I], "Complex64"]
767- = {0, 0, 0, 0, 0, 0, 128, 127}
768- ## FIXME (different convention to MMA)
769- #> WRb[Indeterminate, "Complex64"]
770- = {0, 0, 192, 127, 0, 0, 192, 127}
771-
772- ## Complex128
773- #> WRb[1.19839770357*^-235 - 2.64656391494*^-54 I,"Complex128"]
774- = {102, 217, 1, 163, 234, 98, 40, 15, 243, 104, 116, 15, 48, 57, 208, 180}
775- #> WRb[3.22170267142*^134 - 8.98364297498*^198 I,"Complex128"]
776- = {219, 161, 12, 126, 47, 94, 220, 91, 189, 66, 29, 68, 147, 11, 62, 233}
777- #> WRb[-Infinity, "Complex128"]
778- = {0, 0, 0, 0, 0, 0, 240, 255, 0, 0, 0, 0, 0, 0, 0, 0}
779- #> WRb[DirectedInfinity[1 - I], "Complex128"]
780- = {0, 0, 0, 0, 0, 0, 240, 127, 0, 0, 0, 0, 0, 0, 240, 255}
781- #> WRb[DirectedInfinity[I], "Complex128"]
782- = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 240, 127}
783- ## FIXME (different convention to MMA)
784- #> WRb[Indeterminate, "Complex128"]
785- = {0, 0, 0, 0, 0, 0, 248, 127, 0, 0, 0, 0, 0, 0, 248, 127}
786-
787- ## Complex256
788- ## TODO
789-
790- ## Integer8
791- #> WRb[{5, 2, 11, -4}, {"Integer8", "Integer8", "Integer8", "Integer8"}]
792- = {5, 2, 11, 252}
793- #> WRb[{127, -128, 0}, {"Integer8", "Integer8", "Integer8"}]
794- = {127, 128, 0}
795-
796- ## Integer16
797- #> WRb[{661, -31567, 6256}, {"Integer16", "Integer16", "Integer16"}]
798- = {149, 2, 177, 132, 112, 24}
799- #> WRb[{0, 255, -1, 32640, -32640}, Table["Integer16", {5}]]
800- = {0, 0, 255, 0, 255, 255, 128, 127, 128, 128}
801-
802- ## Integer24
803- #> WRb[{-6247016, -6631492}, {"Integer24", "Integer24"}]
804- = {152, 173, 160, 188, 207, 154}
805- #> WRb[{-1593967, 1989169}, {"Integer24", "Integer24"}]
806- = {145, 173, 231, 49, 90, 30}
807-
808- ## Integer32
809- #> WRb[{-636001327, -236143729}, {"Integer32", "Integer32"}]
810- = {209, 99, 23, 218, 143, 187, 236, 241}
811- #> WRb[{2024611599, -1139645195}, {"Integer32", "Integer32"}]
812- = {15, 31, 173, 120, 245, 100, 18, 188}
813-
814- ## Integer64
815- #> WRb[{1176115612243989203}, "Integer64"]
816- = {211, 18, 152, 2, 235, 102, 82, 16}
817- #> WRb[{-8526737900550694619}, "Integer64"]
818- = {37, 217, 208, 88, 14, 241, 170, 137}
819-
820- ## Integer128
821- #> WRb[139827542997232652313568968616424513676, "Integer128"]
822- = {140, 32, 24, 199, 10, 169, 248, 117, 123, 184, 75, 76, 34, 206, 49, 105}
823- #> WRb[103439096823027953602112616165136677221, "Integer128"]
824- = {101, 57, 184, 108, 43, 214, 186, 120, 153, 51, 132, 225, 56, 165, 209, 77}
825- #> WRb[-49058912464625098822365387707690163087, "Integer128"]
826- = {113, 100, 125, 144, 211, 83, 140, 24, 206, 11, 198, 118, 222, 152, 23, 219}
827-
828- ## Real32
829- #> WRb[{8.398086656*^9, 1.63880017681*^16}, {"Real32", "Real32"}]
830- = {81, 72, 250, 79, 52, 227, 104, 90}
831- #> WRb[{5.6052915284*^32, 9.631141*^6}, {"Real32", "Real32"}]
832- = {251, 22, 221, 117, 165, 245, 18, 75}
833- #> WRb[Infinity, "Real32"]
834- = {0, 0, 128, 127}
835- #> WRb[-Infinity, "Real32"]
836- = {0, 0, 128, 255}
837- ## FIXME (different convention to MMA)
838- #> WRb[Indeterminate, "Real32"]
839- = {0, 0, 192, 127}
840-
841- ## Real64
842- #> WRb[-5.14646619426*^227, "Real64"]
843- = {91, 233, 20, 87, 129, 185, 53, 239}
844- #> WRb[-9.69531698809*^20, "Real64"]
845- = {187, 67, 162, 67, 122, 71, 74, 196}
846- #> WRb[9.67355569764*^159, "Real64"]
847- = {132, 48, 80, 125, 157, 4, 38, 97}
848- #> WRb[Infinity, "Real64"]
849- = {0, 0, 0, 0, 0, 0, 240, 127}
850- #> WRb[-Infinity, "Real64"]
851- = {0, 0, 0, 0, 0, 0, 240, 255}
852- ## FIXME (different convention to MMA)
853- #> WRb[Indeterminate, "Real64"]
854- = {0, 0, 0, 0, 0, 0, 248, 127}
855-
856- ## Real128
857- ## TODO
858-
859- ## TerminatedString
860- #> WRb["abc", "TerminatedString"]
861- = {97, 98, 99, 0}
862- #> WRb[{"123", "456"}, {"TerminatedString", "TerminatedString", "TerminatedString"}]
863- = {49, 50, 51, 0, 52, 53, 54, 0}
864- #> WRb["", "TerminatedString"]
865- = {0}
866-
867- ## UnsignedInteger8
868- #> WRb[{96, 94, 141, 162, 141}, Table["UnsignedInteger8", {5}]]
869- = {96, 94, 141, 162, 141}
870- #> (#==WRb[#,Table["UnsignedInteger8",{50}]])&[RandomInteger[{0, 255}, 50]]
871- = True
872-
873- ## UnsignedInteger16
874- #> WRb[{18230, 47466, 9875, 59141}, Table["UnsignedInteger16", {4}]]
875- = {54, 71, 106, 185, 147, 38, 5, 231}
876- #> WRb[{0, 32896, 65535}, Table["UnsignedInteger16", {3}]]
877- = {0, 0, 128, 128, 255, 255}
878-
879- ## UnsignedInteger24
880- #> WRb[{14820174, 15488225}, Table["UnsignedInteger24", {2}]]
881- = {78, 35, 226, 225, 84, 236}
882- #> WRb[{5374629, 3889391}, Table["UnsignedInteger24", {2}]]
883- = {165, 2, 82, 239, 88, 59}
884-
885- ## UnsignedInteger32
886- #> WRb[{1885507541, 4157323149}, Table["UnsignedInteger32", {2}]]
887- = {213, 143, 98, 112, 141, 183, 203, 247}
888- #> WRb[{384206740, 1676316040}, Table["UnsignedInteger32", {2}]]
889- = {148, 135, 230, 22, 136, 141, 234, 99}
890517 """
891518
892519 summary_text = "write an object of the specified type"
0 commit comments