}
fn rbhex(&self, f: &mut Formatter<'_>, number: f64) -> FmtResult {
- output_hex(f, &number.to_ne_bytes())
+ let rb = self.rb(Some(number), self.format.w() / 2);
+ output_hex(f, &rb)
}
fn date(&self, f: &mut Formatter<'_>, number: f64) -> FmtResult {
Type::PK => Some(self.pk(number)),
Type::IB => Some(self.ib(number)),
Type::PIB => Some(self.pib(number)),
- Type::RB => Some(self.rb(number)),
+ Type::RB => Some(self.rb(number, self.format.w())),
_ => None,
}
}
.to_smallvec(integer, self.format.w())
}
- fn rb(&self, number: Option<f64>) -> SmallVec<[u8; 16]> {
+ fn rb(&self, number: Option<f64>, w: usize) -> SmallVec<[u8; 16]> {
let number = number.unwrap_or(-f64::MAX);
let bytes: [u8; 8] = self.endian.output_float_format.to_bytes(number);
let mut vec = SmallVec::new();
vec.extend_from_slice(&bytes);
- vec.resize(self.format.w(), 0);
+ vec.resize(w, 0);
vec
}
}
.with_cc(CC::C, "((,[,],))".parse().unwrap())
.with_cc(CC::D, ",XXX,,-".parse().unwrap())
.with_cc(CC::E, ",,YYY,-".parse().unwrap());
+ let endian = EndianSettings {
+ output_integer_format: Endian::Big,
+ output_float_format: Endian::Big,
+ ..EndianSettings::default()
+ };
let mut value = Some(0.0);
let mut value_name = String::new();
for (line_number, line) in input.lines().map(|r| r.unwrap()).enumerate() {
let actual = Value::Number(value)
.display(format, UTF_8)
.with_settings(&settings)
+ .with_endian(endian)
.to_string();
assert_eq!(
expected,
test("pibhex.txt");
}
+ #[test]
+ fn rbhex() {
+ test("rbhex.txt");
+ }
+
#[test]
fn leading_zeros() {
struct Test {
--- /dev/null
+.
+RBHEX16: "FFEFFFFFFFFFFFFF"
+2
+RBHEX16: "4000000000000000"
+11
+RBHEX16: "4026000000000000"
+123
+RBHEX16: "405EC00000000000"
+1234
+RBHEX16: "4093480000000000"
+913
+RBHEX16: "408C880000000000"
+3.14159
+RBHEX16: "400921F9F01B866E"
+777
+RBHEX16: "4088480000000000"
+82
+RBHEX16: "4054800000000000"
+690
+RBHEX16: "4085900000000000"
+-2
+RBHEX16: "C000000000000000"
+-11
+RBHEX16: "C026000000000000"
+-123
+RBHEX16: "C05EC00000000000"
+-1234
+RBHEX16: "C093480000000000"
+-913
+RBHEX16: "C08C880000000000"
+-3.14159
+RBHEX16: "C00921F9F01B866E"
+-777
+RBHEX16: "C088480000000000"
+-82
+RBHEX16: "C054800000000000"
+-690
+RBHEX16: "C085900000000000"
+-.1
+RBHEX16: "BFB999999999999A"
+-.5
+RBHEX16: "BFE0000000000000"
+-.9
+RBHEX16: "BFECCCCCCCCCCCCD"
+9999.1
+RBHEX16: "40C3878CCCCCCCCD"
+9999.5
+RBHEX16: "40C387C000000000"
+9999.9
+RBHEX16: "40C387F333333333"
+10000
+RBHEX16: "40C3880000000000"
+18231237
+RBHEX16: "417162FC50000000"
+-9999.1
+RBHEX16: "C0C3878CCCCCCCCD"
+-9999.5
+RBHEX16: "C0C387C000000000"
+-9999.9
+RBHEX16: "C0C387F333333333"
+-10000
+RBHEX16: "C0C3880000000000"
+-8231237
+RBHEX16: "C15F665140000000"
+999.1
+RBHEX16: "408F38CCCCCCCCCD"
+999.5
+RBHEX16: "408F3C0000000000"
+999.9
+RBHEX16: "408F3F3333333333"
+1000
+RBHEX16: "408F400000000000"
+8231237
+RBHEX16: "415F665140000000"
+-999.1
+RBHEX16: "C08F38CCCCCCCCCD"
+-999.5
+RBHEX16: "C08F3C0000000000"
+-999.9
+RBHEX16: "C08F3F3333333333"
+-1000
+RBHEX16: "C08F400000000000"
+-8231237
+RBHEX16: "C15F665140000000"
+99.1
+RBHEX16: "4058C66666666666"
+99.5
+RBHEX16: "4058E00000000000"
+99.9
+RBHEX16: "4058F9999999999A"
+100
+RBHEX16: "4059000000000000"
+821237
+RBHEX16: "41290FEA00000000"
+-99.1
+RBHEX16: "C058C66666666666"
+-99.5
+RBHEX16: "C058E00000000000"
+-99.9
+RBHEX16: "C058F9999999999A"
+-100
+RBHEX16: "C059000000000000"
+-831237
+RBHEX16: "C1295E0A00000000"
+9.1
+RBHEX16: "4022333333333333"
+9.5
+RBHEX16: "4023000000000000"
+9.9
+RBHEX16: "4023CCCCCCCCCCCD"
+10
+RBHEX16: "4024000000000000"
+81237
+RBHEX16: "40F3D55000000000"
+-9.1
+RBHEX16: "C022333333333333"
+-9.5
+RBHEX16: "C023000000000000"
+-9.9
+RBHEX16: "C023CCCCCCCCCCCD"
+-10
+RBHEX16: "C024000000000000"
+-81237
+RBHEX16: "C0F3D55000000000"
+1.1
+RBHEX16: "3FF199999999999A"
+-1.1
+RBHEX16: "BFF199999999999A"
+1.5
+RBHEX16: "3FF8000000000000"
+-1.5
+RBHEX16: "BFF8000000000000"
+1.9
+RBHEX16: "3FFE666666666666"
+-1.9
+RBHEX16: "BFFE666666666666"