Некоторые ответы частично ошибочны, и некоторые факты в них также частично ошибочны.
Ответьте на свой вопрос: Да! Вы можете.
В Typcript
class A {
private a1;
private a2;
}
Создает следующий код в Javascript:
var A = /** @class */ (function () {
function A() {
}
return A;
}());
как @Erik_Cupal , вы можете просто сделать:
let a = new A();
let array = return Object.getOwnPropertyNames(a);
Но это неполное. Что произойдет, если ваш класс имеет собственный конструктор? Вам нужно сделать трюк с Typcript, потому что он не будет компилироваться. Вам нужно назначить любое:
let className:any = A;
let a = new className();// the members will have value undefined
Общее решение будет:
class A {
private a1;
private a2;
constructor(a1:number, a2:string){
this.a1 = a1;
this.a2 = a2;
}
}
class Describer{
describeClass( typeOfClass:any){
let a = new typeOfClass();
let array = Object.getOwnPropertyNames(a);
return array;//you can apply any filter here
}
}
Для лучшего понимания это будет ссылаться в зависимости от контекста.
<44fa0000>
является представлением памяти большого двоичного числа двоичного числа с плавающей запятой 2000.0
. Чтобы получить номер обратно из данных, вы должны сначала прочитать его в UInt32
, преобразовать из бай-тина с бай-тином в главный, а затем передать результат в Float
.
В Swift 2, который был бы
func floatValueFromData(data: NSData) -> Float {
return unsafeBitCast(UInt32(bigEndian: UnsafePointer(data.bytes).memory), Float.self)
}
Пример:
let bytes: [UInt8] = [0x44, 0xFA, 0x00, 0x00]
let data = NSData(bytes: bytes, length: 4)
print(data) // <44fa0000>
let f = floatValueFromData(data)
print(f) // 2000.0
В Swift 3 вы использовали бы Data
вместо NSData
, а unsafeBitCast
можно заменить на инициализатор Float(bitPattern:)
:
func floatValue(data: Data) -> Float {
return Float(bitPattern: UInt32(bigEndian: data.withUnsafeBytes { $0.pointee } ))
}
Используйте эту функцию:
static func returnFloatValue(data: NSMutableData) -> Float {
let bytes = [UInt8](data as Data)
var f: Float = 0
memcpy(&f, bytes, 4)
return f
}
И вы можете увидеть ее в действии здесь:
var initialValue: Float = 19.200
let data = NSMutableData(bytes: &initialValue, length: 4)
func returnFloatValue(data: NSMutableData) -> Float {
let bytes = [UInt8](data as Data)
var f: Float = 0
memcpy(&f, bytes, 4)
return f
}
var result:Float = returnFloatValue(data: data)
print("f=\(result)")// f=19.2