mirror of
https://github.com/vlang/v.git
synced 2025-09-13 09:25:45 -04:00
os: fix swap_bytes_u64 (#24033)
This commit is contained in:
parent
2b7690254d
commit
d6c3e6fe5a
@ -74,17 +74,34 @@ pub fn (mut f File) read_u8() !u8 {
|
|||||||
|
|
||||||
@[inline]
|
@[inline]
|
||||||
fn swap_bytes_u16(x u16) u16 {
|
fn swap_bytes_u16(x u16) u16 {
|
||||||
return ((x >> 8) & 0x00FF) | ((x << 8) & 0xFF00)
|
// vfmt off
|
||||||
|
return ((x >> 8) & 0x00FF) |
|
||||||
|
((x << 8) & 0xFF00)
|
||||||
|
// vfmt on
|
||||||
}
|
}
|
||||||
|
|
||||||
@[inline]
|
@[inline]
|
||||||
fn swap_bytes_u32(x u32) u32 {
|
fn swap_bytes_u32(x u32) u32 {
|
||||||
return ((x >> 24) & 0x0000_00FF) | ((x >> 8) & 0x0000_FF00) | ((x << 8) & 0x00FF_0000) | ((x << 24) & 0xFF00_0000)
|
// vfmt off
|
||||||
|
return ((x >> 24) & 0x0000_00FF) |
|
||||||
|
((x >> 8) & 0x0000_FF00) |
|
||||||
|
((x << 8) & 0x00FF_0000) |
|
||||||
|
((x << 24) & 0xFF00_0000)
|
||||||
|
// vfmt on
|
||||||
}
|
}
|
||||||
|
|
||||||
@[inline]
|
@[inline]
|
||||||
fn swap_bytes_u64(x u64) u64 {
|
fn swap_bytes_u64(x u64) u64 {
|
||||||
return ((x >> 40) & 0x00000000_0000FF00) | ((x >> 24) & 0x00000000_00FF0000) | ((x >> 8) & 0x00000000_FF000000) | ((x << 8) & 0x000000FF_00000000) | ((x << 24) & 0x0000FF00_00000000) | ((x << 40) & 0x00FF0000_00000000) | ((x << 56) & 0xFF000000_00000000)
|
// vfmt off
|
||||||
|
return ((x >> 56) & 0x00000000_000000FF) |
|
||||||
|
((x >> 40) & 0x00000000_0000FF00) |
|
||||||
|
((x >> 24) & 0x00000000_00FF0000) |
|
||||||
|
((x >> 8) & 0x00000000_FF000000) |
|
||||||
|
((x << 8) & 0x000000FF_00000000) |
|
||||||
|
((x << 24) & 0x0000FF00_00000000) |
|
||||||
|
((x << 40) & 0x00FF0000_00000000) |
|
||||||
|
((x << 56) & 0xFF000000_00000000)
|
||||||
|
// vfmt on
|
||||||
}
|
}
|
||||||
|
|
||||||
fn swap_bytes[T](input T) T {
|
fn swap_bytes[T](input T) T {
|
||||||
|
@ -19,8 +19,8 @@ fn test_write_be_read_be() {
|
|||||||
mut f := os.open_file(fname, 'wb')!
|
mut f := os.open_file(fname, 'wb')!
|
||||||
f.write_be[u8](0x08)!
|
f.write_be[u8](0x08)!
|
||||||
f.write_be[u16](0x1617)!
|
f.write_be[u16](0x1617)!
|
||||||
f.write_be[u32](0x3233)!
|
f.write_be[u32](0x30313233)!
|
||||||
f.write_be[u64](0x6465)!
|
f.write_be[u64](0x5859606162636465)!
|
||||||
f.write_u8(123)!
|
f.write_u8(123)!
|
||||||
f.write_u8(42)!
|
f.write_u8(42)!
|
||||||
f.close()
|
f.close()
|
||||||
@ -28,11 +28,19 @@ fn test_write_be_read_be() {
|
|||||||
assert os.read_bytes(fname)! == [
|
assert os.read_bytes(fname)! == [
|
||||||
u8(0x08),
|
u8(0x08),
|
||||||
0x16, 0x17,
|
0x16, 0x17,
|
||||||
0x00, 0x00, 0x32, 0x33,
|
0x30, 0x31, 0x32, 0x33,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x65,
|
0x58, 0x59, 0x60, 0x61, 0x62, 0x63, 0x64, 0x65,
|
||||||
123, 42
|
123, 42
|
||||||
]
|
]
|
||||||
// vfmt on
|
// vfmt on
|
||||||
|
mut r := os.open_file(fname, 'rb')!
|
||||||
|
assert r.read_be[u8]()! == 0x08
|
||||||
|
assert r.read_be[u16]()! == 0x1617
|
||||||
|
assert r.read_be[u32]()! == 0x30313233
|
||||||
|
assert r.read_be[u64]()! == 0x5859606162636465
|
||||||
|
assert r.read_u8()! == 123
|
||||||
|
assert r.read_u8()! == 42
|
||||||
|
r.close()
|
||||||
}
|
}
|
||||||
|
|
||||||
fn test_write_le_read_le() {
|
fn test_write_le_read_le() {
|
||||||
@ -40,25 +48,25 @@ fn test_write_le_read_le() {
|
|||||||
mut f := os.open_file(fname, 'wb')!
|
mut f := os.open_file(fname, 'wb')!
|
||||||
f.write_le[u8](0x08)!
|
f.write_le[u8](0x08)!
|
||||||
f.write_le[u16](0x1617)!
|
f.write_le[u16](0x1617)!
|
||||||
f.write_le[u32](0x3233)!
|
f.write_le[u32](0x30313233)!
|
||||||
f.write_le[u64](0x6465)!
|
f.write_le[u64](0x5859606162636465)!
|
||||||
f.write_u8(12)!
|
f.write_u8(12)!
|
||||||
f.write_u8(34)!
|
f.write_u8(34)!
|
||||||
f.close()
|
f.close()
|
||||||
// vfmt off
|
// vfmt off
|
||||||
assert os.read_bytes('f_le')! == [
|
assert os.read_bytes(fname)! == [
|
||||||
u8(0x08),
|
u8(0x08),
|
||||||
0x17, 0x16,
|
0x17, 0x16,
|
||||||
0x33, 0x32, 0x00, 0x00,
|
0x33, 0x32, 0x31, 0x30,
|
||||||
0x65, 0x64, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x65, 0x64, 0x63, 0x62, 0x61, 0x60, 0x59, 0x58,
|
||||||
12, 34
|
12, 34
|
||||||
]
|
]
|
||||||
// vfmt on
|
// vfmt on
|
||||||
mut r := os.open_file(fname, 'rb')!
|
mut r := os.open_file(fname, 'rb')!
|
||||||
assert r.read_le[u8]()! == 0x08
|
assert r.read_le[u8]()! == 0x08
|
||||||
assert r.read_le[u16]()! == 0x1617
|
assert r.read_le[u16]()! == 0x1617
|
||||||
assert r.read_le[u32]()! == 0x3233
|
assert r.read_le[u32]()! == 0x30313233
|
||||||
assert r.read_le[u64]()! == 0x6465
|
assert r.read_le[u64]()! == 0x5859606162636465
|
||||||
assert r.read_u8()! == 12
|
assert r.read_u8()! == 12
|
||||||
assert r.read_u8()! == 34
|
assert r.read_u8()! == 34
|
||||||
r.close()
|
r.close()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user